ホームページ >Java >SIGSEGV のクラッシュ後に JVM をすぐに終了するにはどうすればよいですか?

SIGSEGV のクラッシュ後に JVM をすぐに終了するにはどうすればよいですか?

WBOY
WBOY転載
2024-02-09 19:09:091097ブラウズ

php エディタ Xigua が答えを提供します。JVM が SIGSEGV クラッシュに遭遇した場合、迅速に終了するためのいくつかの措置を講じることができます。まず、JVM パラメータ -XX: CrashOnOutOfMemoryError を設定すると、メモリがオーバーフローしたときに JVM がクラッシュしてすぐに終了します。次に、Java の例外処理メカニズムを使用して SIGSEGV 例外をキャッチし、例外をキャッチした後に System.exit() メソッドを呼び出してプログラムを終了できます。さらに、JNI インターフェイスを使用してオペレーティング システムと対話し、オペレーティング システムが提供する exit メソッドを呼び出して迅速に終了することもできます。つまり、JVM パラメータを適切に設定し、適切な例外処理メカニズムを使用することで、SIGSEGV クラッシュ後に JVM を迅速に終了し、プログラムの安定性と信頼性を向上させることができます。

質問内容

tensorflow java の問題により、サービスの 1 つが頻繁にクラッシュします。私たちはそれを許容できます (多くの場合、k8s が再起動します)。問題は、jvm が終了するまでに数分かかることです。ネイティブ コードで sigsegv を強制的に高速終了する方法はありますか?

リーリー ###数分後:###
corrupted size vs. prev_size while consolidating
#
# a fatal error has been detected by the java runtime environment:
#
#  sigsegv (0xb) at pc=0x00007fe4f321a898, pid=1, tid=545
#
# jre version: openjdk runtime environment zulu21.28+85-ca (21.0+35) (build 21+35)
# java vm: openjdk 64-bit server vm zulu21.28+85-ca (21+35, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, g1 gc, linux-amd64)
# problematic frame:
# c  [libc.so.6+0x28898]  abort+0x178
#
# core dump will be written. default location: /data/core
#
# an error report file with more information is saved as:
# /data/hs_err_pid1.log

解決策

次の JVM オプションを追加します:

リーリー

これにより、エラー レポートやコア ダンプを作成せずに、sigsegv 上で jvm が即時に強制終了されます。それでも致命的なエラー メッセージを表示したい場合は、

-xx:suppressfatalerrormessage

-xx:errorlogtimeout=1 に置き換えます。 この JVM はかなり大きなヒープ (> 64 GB) で実行されているのではないかと思われます。非常に多くのメモリを使用するプロセスの場合、コア ダンプ ファイルを書き出すのに少し時間がかかります。

リーリー

これにかかる数分の間に、上記の場所でコア ダンプ ファイルが成長しているのが確認できる場合があります (これは、この理論を確認する簡単な方法です)。

解決策は、コア ダンプ ファイルの作成を無効にすることです。詳細は特定のオペレーティング システムによって異なります (ただし、コア ダンプは、ほとんどすべての UNIX ベースのオペレーティング システムで無効にすることができます)。 さらに、その特定の場所にファイル システム関連のボトルネックが存在し、コア ダンプの書き込みが予想より遅くなる可能性があります。

以上がSIGSEGV のクラッシュ後に JVM をすぐに終了するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。