Cnosdb数据节点重启后发生Panic的问题反馈
Cnosdb数据节点重启触发Panic(内存耗尽错误)
问题描述
Cnosdb数据节点被强制终止后重启出现Panic,报错为MemoryExhausted。
环境信息
version: 52cd675 集群规模:1m2d 数据量:200g
复现步骤
- 执行查询语句:
select count(1) from readings; - 使用
kill -9强制终止数据节点进程 - 执行重启命令:
nohup ./target/release/cnosdb run -c 64 -m 256 --config ./config/config_31001.toml > /data/cnosdb/logs/data_node.1001.log &
错误日志
2023-03-14T05:48:20.980084Z WARN tskv::wal: recovering version set from seq '362108' at tskv/src/wal.rs:380 The application panicked (crashed). Message: called `Result::unwrap()` on an `Err` value: MemoryExhausted Location: /home/bca/code/cnosdb/tskv/src/wal.rs:435 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ BACKTRACE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ⋮ 9 frames hidden ⋮
分析与解决建议
内存不足导致恢复失败
日志显示Panic发生在WAL(预写日志)恢复阶段,错误类型为MemoryExhausted。当前启动命令通过-m 256限制节点可用内存为256MB,而200G数据量的WAL恢复需要更多内存支撑,最终因内存耗尽触发Panic。解决措施
- 增大内存限制参数:调整启动命令中的
-m值,根据服务器可用内存情况,建议设置为512MB或更高(比如-m 512),确保有足够内存完成WAL恢复。 - 避免强制终止进程:尽量使用
kill -TERM等正常终止命令,让数据节点有机会完成WAL刷写和资源清理,减少重启时的恢复压力。 - 检查服务器内存资源:确保服务器有足够空闲内存分配给Cnosdb节点,避免与其他进程产生内存竞争。
- 增大内存限制参数:调整启动命令中的
内容的提问来源于stack exchange,提问作者Baker X
相关产品推荐
相关产品推荐

