运行nodetool info命令触发NullPointerException且Gossip未激活的解决求助
问题排查与解决方案
问题现象
执行nodetool info命令时返回如下结果,伴随java.lang.NullPointerException异常,且核心服务均未激活:
cassandra-cassandra-vm0 conf$ nodetool info ID : e5c47b97-b07f-4a20-a135-6187adeaa833 Gossip active : false Thrift active : false Native Transport active: false Load : 1.04 GiB -- StackTrace -- java.lang.NullPointerException at org.apache.cassandra.metrics.TableMetrics$1.getValue(TableMetrics.java:181)
排查与解决步骤
确认Cassandra进程状态
先检查进程是否正常运行:ps aux | grep cassandra若进程未启动,直接重启Cassandra;若进程存在但服务未激活,继续后续操作。
修复表元数据异常(NPE根源)
堆栈指向TableMetrics类,说明表统计指标加载时触发空指针,大概率是系统表元数据损坏:- 停止Cassandra服务:
sudo systemctl stop cassandra - 备份系统表数据,防止数据丢失:
cp -r /var/lib/cassandra/data/system /var/lib/cassandra/data/system_backup - 删除损坏的系统表文件(重点清理
system.size_estimates目录下的*.db文件),重启后系统会自动重建系统表:rm -rf /var/lib/cassandra/data/system/size_estimates/* sudo systemctl start cassandra
- 停止Cassandra服务:
验证核心服务状态
重启后等待1-2分钟,再次执行nodetool info,检查Gossip active等状态是否变为true:nodetool info若Gossip仍未激活,检查
cassandra.yaml配置:- 确认
listen_address/broadcast_address配置正确,节点间网络可达 - 检查
seed_provider配置的种子节点是否正常运行 - 关闭防火墙或开放Cassandra默认端口(7000用于Gossip,9042用于Native Transport)
- 确认
查看日志定位深层问题
若以上步骤无效,搜索Cassandra日志(默认路径/var/log/cassandra/system.log)中的错误信息:grep -i "error" /var/log/cassandra/system.log
内容的提问来源于stack exchange,提问作者Balu
相关产品推荐
相关产品推荐

