Linux

如何查找casandra頻繁殺人的原因?

  • January 26, 2012

在 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
  • 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 中的任何其他設置?

這些程序被核心殺死,因為它們正在吃掉所有的記憶體(oom-killer)。如果您的 Xmx 和 XmaxpermGen 配置不正確,則經常使用 java。也不要為java分配所有記憶體,讓一些空閒記憶體給作業系統。

查看您的真實控制台(來自該伺服器的監視器),看看您是否沒有看到任何錯誤消息。

問候

引用自:https://serverfault.com/questions/353423