Windows Server 2016执行stop-server命令后Cassandra服务异常重启
解决Windows Server 2016上Cassandra执行
stop-server后自动重启的问题 这种情况大概率是因为你的Cassandra是作为Windows服务部署的,或者有守护进程(比如nssm、Windows服务控制管理器)在监控进程状态——当你用stop-server -p ../pid.txt -f强制终止进程后,守护机制会自动重启新的Cassandra进程来维持服务可用性。下面是具体的排查和解决步骤:
1. 确认Cassandra的运行方式
先排查Cassandra是否以服务形式运行:
- 按下
Win + R,输入services.msc回车打开服务管理器 - 在服务列表里查找名称包含
Cassandra的条目,查看它的状态是否为「运行中」
如果确实是服务运行模式,直接杀进程的操作会触发服务默认的「失败时重启」恢复策略,导致新进程立刻启动。
2. 正确的停止方法
方法一:使用官方优雅停止脚本
优先用Cassandra自带的停止脚本,它会触发优雅关闭流程(完成当前请求、刷新内存数据到磁盘),避免数据损坏:
# 切换到Cassandra的bin目录 cd C:\path\to\cassandra\bin # 执行停止脚本 cassandra-stop.bat
方法二:通过Windows服务停止
如果是服务模式,直接操作服务是最可靠的方式:
- 图形界面:在服务管理器中找到Cassandra服务,右键选择「停止」
- 命令行:以管理员身份打开命令提示符,执行:
net stop "Cassandra Service" # 替换成你实际的服务名称,比如可能是Apache Cassandra
方法三:临时禁用服务自动重启(如需用stop-server命令)
如果必须使用stop-server命令,先修改服务的恢复选项:
- 在服务管理器中右键Cassandra服务,选择「属性」
- 切换到「恢复」标签页
- 将「第一次失败」「第二次失败」「后续失败」都设置为「不操作」
- 点击「确定」保存后,再执行
stop-server -p ../pid.txt -f命令
3. 额外注意事项
- 尽量避免用
-f参数强制终止Cassandra进程,这可能导致内存中未持久化的数据丢失,引发数据不一致 - 核对
pid.txt中的进程ID是否与任务管理器「详细信息」标签页里的Cassandra进程PID一致,避免误杀其他进程
内容的提问来源于stack exchange,提问作者spdev
相关产品推荐
相关产品推荐

