我想阻止 Cassandra 转储 hprof 文件,因为我不需要使用它们。
我的磁盘空间也非常有限(100 GB 中的 50 GB 用于数据),这些文件在我说“停止”之前就吞噬了所有磁盘空间。
我该怎么办?
有没有我可以用来不时删除这些文件的 shell 脚本?
最佳答案
这是因为 Cassandra 以 -XX:+HeapDumpOnOutOfMemoryError
Java 选项开头。如果你想分析,这是个好东西。此外,如果您收到大量堆转储,表明您可能应该调整 Cassandra 可用的内存。
我没试过。但是要阻止此选项,请在 $CASSANDRA_HOME/conf/cassandra-env.sh
JVM_OPTS="$JVM_OPTS -XX:+HeapDumpOnOutOfMemoryError"
您也可以选择评论此 block ,但我认为这并不是必需的。我猜这个 block 在 1.0+ 版本中可用。我在 0.7.3 中找不到这个。
# set jvm HeapDumpPath with CASSANDRA_HEAPDUMP_DIR
if [ "x$CASSANDRA_HEAPDUMP_DIR" != "x" ]; then
JVM_OPTS="$JVM_OPTS -XX:HeapDumpPath=$CASSANDRA_HEAPDUMP_DIR/cassandra-`date +%s`-pid$$.hprof"
fi
让我知道这是否有效。
更新
...I guess it is JVM throwing it out when Cassandra crashes / shuts down. Any way to prevent that one from happening?
如果您想完全禁用 JVM 堆转储,请参阅此处 how to disable creating java heap dump after VM crashes?
关于java - 防止 Cassandra 转储 hprof 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9108118/