在具有 1GB 内存的 centos linux 系统中安装了 cassandra 0.8。启动 cassandra 后一小时内,它经常死机。另外,我可以说 java 也在被杀死,而这对于运行 cassandra 是必需的,因此,请问我如何找到 cassandra 死机的原因。
内存使用情况:
-bash-3.2# free -m
total used free shared buffers cached
Mem: 500 454 46 0 17 352
-/+ buffers/cache: 84 415
Swap: 1023 0 1023
答案1
dmesg
应该告诉你 oom-killer 是否启动/var/log/cassandra/system.log
会告诉你是否耗尽了 Java 堆(OutOfMemoryException)
如果是 OutOfMemoryException,则设置:
JVM_OPTS="$JVM_OPTS -XX:+HeapDumpOnOutOfMemoryError"
JVM_OPTS="$JVM_OPTS -XX:HeapDumpPath=/var/crash/cassandra_`date +%s`.hprof"
在 cassandra-env.sh 中将生成一个堆转储,您可以对其进行后处理以查看哪里出了问题。您是否更改了 cassandra-env 中的任何其他设置?
答案2
由于占用了所有内存(oom-killer),进程会被内核终止。如果 Xmx 和 XmaxpermGen 配置不正确,java 中就会经常出现这种情况。另外,不要为 java 分配所有内存,留出一些空闲内存给操作系统。
查看您的真实控制台(从该服务器监视),看看是否没有看到任何错误消息。
问候