【发布时间】:2017-01-30 16:07:29
【问题描述】:
- 使用 Cassandra 2.2.8。
我的情况是为单个表创建了太多 SSTables (98,000+),而为其他 CF 创建了更多。 Node 不断崩溃,抱怨 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::pd_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)(内部版本 1.8.0_65-b17)
【问题讨论】:
-
您是否更改了 cassandra.yml 中的压缩相关设置?
-
您好,谢谢您提出我的问题。不,压实相关的设置不会改变;事实上,Cassandra.yaml 文件中根本没有进行任何更改。我可以看到初始化 C* 时,打开了数量巨大的 SSTabes!为 JVM 留下任何空间,结果导致 oom 错误关闭。我现在无法启动节点
-
你能把你所有的错误和警告日志都写下来吗?
标签: cassandra