本地安装Cassandra出现启动JVM告警 寻求技术解决方案
Cassandra启动告警排查与解决方案
告警1:JMX未开放远程连接
- 告警含义:JMX 未配置为接收远程连接,更多信息可参考cassandra-env配置说明
- 触发原因:当前启动参数仅配置了
-Dcassandra.jmx.local.port=7199,JMX服务只绑定本机回环地址,仅允许本机进程连接获取监控指标,拒绝所有远程访问请求。 - 处理方案:
- 仅本地测试使用、不需要远程监控:可直接忽略该告警,不影响Cassandra正常运行
- 需要启用远程JMX监控的按以下步骤调整:
- 进入Cassandra安装目录的
conf文件夹,Windows系统修改cassandra-env.ps1,Linux/macOS系统修改cassandra-env.sh - 注释掉默认的
JMX_LOCAL = "true"配置项,自定义设置JMX_PORT端口号 - 给JVM启动参数追加
-Djava.rmi.server.hostname=当前机器的局域网IP,按需补充JMX访问密码、IP白名单规则 - 保存配置后重启Cassandra即可生效
- 进入Cassandra安装目录的
告警2:JVM未配置OOM自动退出规则
- 告警含义:JVM 未设置抛出OutOfMemoryError时自动终止的规则,可能引发数据损坏,可添加以下任意JVM参数配置OOM触发行为:
-XX:+ExitOnOutOfMemoryError、-XX:+CrashOnOutOfMemoryError,或-XX:OnOutOfMemoryError="<要执行的命令>" - 触发原因:当前JVM参数仅配置了
-XX:+HeapDumpOnOutOfMemoryError(OOM时生成堆转储文件),未定义OOM后的进程执行动作,默认可能继续运行部分业务线程,导致SSTable、commitlog写入逻辑异常,损坏本地持久化数据。 - 处理方案:
- 打开Cassandra安装目录
conf文件夹下的jvm8-server.options(3.11.x版本默认适配Java8,对应该配置文件) - 在现有JVM参数末尾追加任意一项符合需求的配置:
- 生产环境推荐添加
-XX:+ExitOnOutOfMemoryError:OOM时直接退出进程,避免带病运行 - 需要保留完整崩溃上下文可添加
-XX:+CrashOnOutOfMemoryError:OOM时生成完整崩溃日志后终止进程 - 需要OOM时自动重启可添加
-XX:OnOutOfMemoryError="你的进程重启脚本路径":OOM时自动执行指定的重启脚本
- 生产环境推荐添加
- 保存配置后重启Cassandra即可生效
- 打开Cassandra安装目录
注:以上两个告警均为启动检查类提示,不属于致命错误,不调整的情况下本地单节点Cassandra仍可正常启动,可根据实际使用需求选择是否修改。
内容的提问来源于stack exchange,提问作者BVN
相关产品推荐
相关产品推荐

