Cassandra:太多的马厩 - 节点立即关闭


  • 使用 Cassandra 2.2.8。

我的情况是为单个表创建了太多的 SSTable(98,000+),而为其他 CF 创建了更多。 节点不断崩溃,抱怨 jre 内存不足。 我尝试将 linux nofile 限制增加到 200K,max_heap_size增加到 16G,但无济于事!

寻求帮助以了解如何减少 # 的 SSTables(压缩?)并保持节点正常运行以进行维护的方法。

提前感谢!

错误:

没有足够的内存供 Java 运行时环境继续运行。 内存不足错误 (os_linux.cpp:2627), pid=22667, tid=139622017013504

--------------- T H R E A D

---------------当前线程 (0x00007efc78b83000): JavaThread "MemtableFlushWriter:2" 守护进程 [_thread_in_vm, id=22726, stack(0x00007efc48b61000,0x00007efc48ba2000)]

堆栈: [0x00007efc48b61000,0x00007efc48ba2000], sp=0x00007efc48b9f730, 可用空间=249k 本机帧:(J=编译的Java代码,j=解释,Vv=VM代码,C=本机代码) V [libjvm.so+0xab97ea] VMError::report_and_die()+0x2ba V [libjvm.so+0x4f9dcb] report_vm_out_of_memory(char const*, int, unsigned long, VMErrorType, char const*)+0x8b V [libjvm.so+0x91a7c3] os::Linux::commit_memory_impl(char*, unsigned long, bool)+0x103 V [libjvm.so+0x91ad19] os::p d_commit_memory(char*, unsigned long, unsigned long, bool)+0x29 V [libjvm.so+0x91502a] os::commit_memory(char*, unsigned long, unsigned long, bool)+0x2a

JRE 版本: Java(TM) SE 运行时环境 (8.0_65-b17)(build 1.8.0_65-b17)

我会将其视为死节点情况:

https://docs.datastax.com/en/cassandra/3.0/cassandra/operations/opsReplaceNode.html

https://docs.datastax.com/en/cassandra/2.1/cassandra/operations/opsReplaceNode.html

完成该过程后,节点将具有更少的表等。困扰我的是你是如何陷入这种情况的。能否提供一些架构、插入、删除、ttl 相关信息并描述工作负载?

最新更新