出典:JAVAプロセスが突然姿を消した理由は?
問題の説明
我々はJavaプロセスを満たしていれば、実際の運用環境では、突然、問題のトラブルシューティングを行う方法、消えましたか?
考え
いくつかの理由が考えられます。
問題の①、Javaアプリケーション:OOMは、プロセスのクラッシュを引き起こすことが起こります
最も一般的な異常ヒープメモリの「java.lang.OutOfMemoryErrorを:Javaのヒープ領域」は、以下のトラブルシューティング手順:
- ステップ1:+ HeapDumpOnOutOfMemoryErrorと-XX:JVMは-XXパラメータを参照してくださいHeapDumpPath = * / java.hprof。
- ステップ2:指定したパスに応じて、ダンプファイルHeapDumpPathかどうかを確認してください。
- ステップ3:そこに、ダンプファイルを分析するためにJhat、VisualVMのおよび他のツールを使用している場合は、
②、JVMエラー:JVMまたはJDK自体は、プロセスのクラッシュバグを引き起こします
JVMエラーが致命的なクラッシュを引き起こすことが発生した場合、原因のJVMがクラッシュに関する重要な情報が含まれ、このファイル、hs_err_pid_xxx.logを生成します、我々は、システムの安定性を確保するために修復するJVMクラッシュの原因を突き止めるために、ファイルを分析することができます。
デフォルトでは、このファイルはもちろん、パスのJVMパラメータで指定することができ、作業ディレクトリに生成されます。
-XX:ERRORFILE =は/ var / log / hs_err_pid <PID> .logに
彼は、主に以下の内容を持つファイルの内容
- ヘッダファイルをログに記録
- クラッシュにつながるスレッド情報
- すべての情報スレッド
- 安全に関する情報ポイントとロック
- ヒープ情報
- ネイティブコードキャッシュ
- イベントをコンパイルします
- GC関連レコード
- JVMのメモリマップ
- JVMの起動パラメータ
- サーバ情報
ファイルを取得した後、言うまでもなく、ゆっくりとそれを食べます。ここで、私は感情の良心にしたいと彼は言いました。あなたが何かをして、このファイルを読み込みます場合は、このファイルには、巨大な複雑です。
③オペレーティングシステムOOMキラーに
LinuxカーネルがOOMキラー(メモリ不足と呼ばれる仕組みがあるキラー)、 このメカニズムは、特に瞬間に、あまりにも多くのメモリを取る人たちはすぐにメモリ不足を防止するために、メモリのプロセスを大量に消費し、カーネルがプロセスを殺す監視しますアウト。
だから、あなたはjavaプロセスが突然なくなっていることを見つけ、それを取り除くために、LinuxのOOMキラーではない疑いが初めてでした!
あなたは、次の文書翻訳に行くことができます
- システム・エラー・ログ:
/var/log/messages
あなたは、コマンドを実行します
egrepの -i ' 殺さプロセス'は/ var / log / メッセージ
#EGREP =のgrep -E基本的な正規表現を使用することができ、あなたはまた、ケースを無視する-iに代わって、拡張表現を使用することができます
または# grepの "メモリ不足"の/ var / log / messagesに
検索するには、ログインしてください。
もちろん、あなたはまた、カーネルログクエリ内で行くことができます。システムまたはJavaまたは他のプロセスで実行されている時には、Linuxシステムでは、いくつかの奇妙な問題が発生し、突然、このような突然の再起動時などのように、ハングアップなど。ソフトウェアでの問題を見つけることができませんし、我々は、我々が見ることのdmesgを使用することができ、問題がハードウェアまたはカーネルで疑う必要があります。
| dmesgの-T はgrep のJava #や dmesgの -T | grepを ' メモリ不足' #1 -Tは、スタンプがあります
そして、Javaのログの停止時間のルートを比較し、ので、次のJavaのメモリ使用量の最適化から、問題があると思われる、問題を解決しようとして開始するようにメモリを追加します!
備考:
dmesgコマンドはUnixライクなカーネル・システム内の情報を表示するために使用されます。dmesgのフルネームが表示メッセージ(又はディスプレイドライバ)であり、情報が表示されます。
確かに、dmesgコマンドデータは、カーネルのリングバッファから取得されます。我々は、Linux上でトラブルシューティングを行うときは、dmesgコマンドは非常に便利な、それは非常によく、私たちは、ハードウェア関連のエラーや警告を特定するのに役立ちます。また、dmesgコマンドデーモンは、関連する情報が私たちのデバッグを支援してきましたプリントアウトすることができます。