You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CentOS环境下Cassandra启动卡在Initializing IndexInfo故障求助

解决Cassandra重启后卡在system.IndexInfo初始化、Connection refused的问题

我之前在CentOS运维Cassandra时也碰到过完全一样的情况——故障重启后服务卡死,连nodetool status都报Connection refused,debug.log停在Initializing system.IndexInfo这一行。结合实际排查经验,给你几个靠谱的解决思路:

先确认基础状态

  • 首先检查Cassandra进程是否还在运行:ps aux | grep cassandra,如果有进程但端口没监听,那确实是启动卡住了;
  • 再检查关键端口状态:netstat -tulpn | grep 7000(集群通信端口)、netstat -tulpn | grep 9042(CQL客户端端口),如果都没显示监听,说明服务没完成启动流程。

最常见原因:system表SSTable损坏

故障场景下很容易导致system键空间的表损坏,而system.IndexInfo是启动时优先初始化的表,卡住大概率是它的SSTable出问题了,修复步骤:

  1. 先彻底停止Cassandra:
    sudo service cassandra stop
    # 如果停不掉就强制杀进程
    sudo kill -9 $(ps aux | grep cassandra | grep -v grep | awk '{print $2}')
    
  2. 备份system表目录(重要!防止误操作):
    sudo cp -r /var/lib/cassandra/data/system/ /tmp/cassandra_system_backup/
    
  3. 进入system数据目录,删除IndexInfo相关的SSTable文件:
    cd /var/lib/cassandra/data/system/
    rm -rf indexinfo-*
    
  4. 清空损坏的commitlog(故障后commitlog可能残留异常数据):
    sudo rm -rf /var/lib/cassandra/commitlog/*
    
  5. 重新启动Cassandra并实时查看日志:
    sudo service cassandra start
    tail -f /var/log/cassandra/debug.log
    
    观察日志是否能顺利走完system表初始化,不再卡在IndexInfo这一步。

其他可能的排查方向

  • 磁盘空间不足:用df -h检查Cassandra数据目录(默认/var/lib/cassandra/)所在磁盘是否满了,Cassandra启动需要足够空间写入临时文件和SSTable,至少要腾出2-3G空间再尝试启动;
  • 内存配置不合理:检查/etc/cassandra/cassandra-env.sh里的MAX_HEAP_SIZE和HEAP_NEWSIZE,比如8G内存的服务器,建议MAX_HEAP_SIZE="4G"、HEAP_NEWSIZE="1G",调整后重启服务;
  • system表整体损坏:如果删除IndexInfo还是卡住,可以尝试启动到单用户模式修复整个system键空间:
    sudo cassandra -f -Dcassandra.consistent.rangemovement=false -Dcassandra.ignore_dc=true
    
    启动后执行nodetool repair system完成修复,再正常重启服务。

内容的提问来源于stack exchange,提问作者user988066

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:11:45