2012-02-02 9 views
6

カサンドラがhprofファイルを使用する必要がないので、ダンプしないようにしたいと思います。Cassandraがhprofファイルをダンプするのを防ぐ

また、非常に限られたディスク容量(100GBのうち50GBがデータ用に使用されます)があり、これらのファイルは「停止」と言う前にすべてのディスク容量を吸収します。

どうすればよいですか?

これらのファイルを時々消去するために使用できるシェルスクリプトはありますか?

答えて

7

それはカサンドラが-XX:+HeapDumpOnOutOfMemoryError Javaオプションで始まるので起こります。あなたが分析したいのであれば良いものです。また、Cassandraに利用可能なメモリを調整する必要があることを示すヒープダンプがたくさんある場合は、

私はそれを試していません。しかし、このオプションを阻止するために、あなたは本当に必要なだけでなく、このブロックをコメントし、ないかもしれませんが、$CASSANDRA_HOME/conf/cassandra-env.sh

JVM_OPTS="$JVM_OPTS -XX:+HeapDumpOnOutOfMemoryError" 

必要に応じて、以下の行をコメント、私は思います。このブロックは、私が推測する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 

これが機能するかどうか教えてください。


更新

...私はカサンドラがシャットダウン/クラッシュしたとき、それはJVMがそれを投げていると思います。そのような事態を防ぐための方法はありますか?

あなたは完全にJVMのheapdumpを無効にしたい場合、あなたはそれはまだ動作しませんheapdumpパスを指すようにcassandra-env.shを更新した場合でも、ここhow to disable creating java heap dump after VM crashes?

+0

私もそれをコメントアウトすることを考えていた。しかし、私が気づいたhprofファイルは、 "cassandra-NNN.hprof"というテンプレートに従わず、 "pid-XXX.hprof"というテンプレートに従っていなかったので、CassandraがクラッシュしたりシャットダウンしたときにJVMがスローしてしまうと思います。そのような事態を防ぐための方法はありますか? –

+1

@ Salocin.TEN更新を参照してください – Nishant

+0

$ CASSANDRA_HOME/conf/cassandra-env.shのブロックをコメントアウトすることは実際には機能しませんでした。しかし、リンクと.hprofの削除cronジョブのおかげで、すべてがうまくいきました。 もう一度お世話になりました。 –

1

私はCassandraを使用していないことを認めますが、コンパイル時に有効にしない限り、あるいはプログラムがOutofMemoryExceptionを経験しない限り、何かhprofファイルをダンプしないでください。だからそこを見てみてください。

シェルスクリプトに関して、ファイルが特定の場所にダンプされている場合は、このコマンドを使用してすべての* .hprofファイルを削除できます。

find /my/location/ -name *.hprof -delete 

これは検索に一致するすべてのファイルを削除findから-deleteディレクティブを使用しています。詳細を絞る必要がある場合は、manページで検索オプションを探してください。あなたは「時間の時間に」要件を満たすことになる、ある時点でスクリプトを実行するためにcronを使用することができます

、ほとんどのLinuxディストリビューションをインストールするcronを持っている、とcrontabファイルのオフ動作します。あなたはcrontabについてもっと知ることができますman crontab

+0

ありがとうございます!私もそれを考え出した! 実際には、 "cassandra-XXX.hprof"の代わりに "pid-XXX.hprof"という名前が付けられているので、Cassandraインスタンスを中断したときにhprofファイルが出てくるので、 シェルスクリプトに感謝します。私はそれらを実装します。 :) –

0

を参照してください。その理由は、起動スクリプト/ etc/initからのものでした。D /カサンドラ・デフォルトを作成し、この行があるHeapDumpパス

start-stop-daemon -S -c cassandra -a /usr/sbin/cassandra -b -p "$PIDFILE" -- \ 
    -p "$PIDFILE" -H "$heap_dump_f" -E "$error_log_f" >/dev/null || return 2 

私は成り上がりの専門家ではないが、私がやったことは、単に複製を作成するのparamを取り除きました。別の奇妙な観測でも、ps auxを介してcassandraプロセスをチェックすると、いくつかのパラメータが2回書き込まれることがわかります。あなたがソースのcassandra-env.shと$ JVM_OPTSを印刷すると、それらの変数は大丈夫です。

関連する問題