スプリングブートの失敗を思い出してください:インターフェースが応答しない-「CPU 100%」ログを書き込めない-「ディスクがいっぱいです

午前中、何人かの友人はシステムにアクセスできなかったと言った、

以下は解決プロセスを記録します:

インターフェイスのテスト結果は次のとおりです

インターフェースが応答しない

 

最初にアプリケーションログを確認する

ログはtail -fによって追加されません。htopを使用して、システムの両方のコアが100%であることを確認し、アプリケーションによって占有されていることを確認します

Javaプログラムの占有状況の分析を引き継ぎました

合計から始めましょう:

サーバーのCPU使用率が非常に高く、100%に達しています位置付け方法
1: 印刷:http://www.linuxhot.com/java-cpu-used-high.html 1.jps JavaプロセスのPIDを取得します。 2.jstack pid >> java.txt CPU使用率が高いスレッドスタックをエクスポートします。 3.top -H -p PID対応するプロセスのどのスレッドがCPUを過度に占有しているかを確認します。 4.echo "obase = 16; PID" | bcスレッドのPIDを16進数、大文字から小文字に変換します。 5. 2番目のステップでエクスポートされたJava.txtで、16進数に変換されたスレッドのPIDを見つけます。対応するスレッドスタックを見つけます。 6.高負荷のスレッドスタックがどのビジネスオペレーションであるかを分析します。手順を最適化し、問題に対処します。 方法2: 1. topを使用してCPU 使用率が高いプロセスのPIDを見つけます Top Top ps aux | grep PIDコマンドを使用 します2.スレッド情報を取得してCPU 使用率が高いスレッドを見つけますPs -mp pid -o THREAD、tid、time rn 3.必要なスレッドIDを16進形式に変換します printf "%x \ n" tid 4.スレッドのスタック情報を出力します jstack pid | grep tid -A 30 方法3: 1.プロセスが高すぎる ps-を占めていることを確認しますef | grep mem- *プロセスのPIDを表示 top -Hp PIDプロセスの jstackを表示しますPID -l 21113スレッドのスタックを表示します

 具体操作

jps JavaプロセスのPIDを取得します。

 8783

jstack pid >> java.txtエクスポートCPU使用率の高いスレッドスタック

jstackを使用して、上記のjava pidのスレッドを出力します

スレッドスタック情報を出力する

異常なし?

ログに戻り、最後の100行を指定します

ログの書き込みが停止する前にログの書き込みエラーが報告されました。ログを書き込むことができませんでした。おそらくディスクの問題です。

案の定、いっぱい

占有者を確認し、内部を確認

スペースを消費するアプリケーションログを削除した後、/ a **のパーティションディスク容量が元に戻ったのに、ルートディレクトリが99%であることがわかりました。du-sh / *の結果から、/ tmpの方が多くなります。/tmp mountを参照してくださいポイントが/と同じパーティション上にあるかどうか:df -h / tmp結果は次のとおりです

/ tmpフォルダー内の一時ファイルをクリアした後

OK、アプリケーションを再起動します、通常

この大きな円は単なるディスクの問題であることがわかりましたアプリケーションログを見ると、ログが追加されないことがわかります。

おすすめ

転載: www.cnblogs.com/timseng/p/12718999.html
おすすめ