Java事故のトラブルシューティング

上:CPU負荷の表示                                                                                                                                                                                    

free:メモリ使用量を表示する

                     キャッシュに使用された空き共有バッファの合計
Mem:3859356 3697132 162224 12 107688 1724812-
/ + buffers / cache:1864632 1994724
Swap:4194300 79932 4114368
 

df:ディスク使用量を表示する

ファイルシステム1Kブロックが使用可能使用可能Use%Mounted on
/ dev / vda1 3997376 778440 3009224 21%/
tmpfs 4026828 0 4026828 0%/ dev / shm
/ dev / vda2 3997376 24544 3763120 1%/ home
/ dev / vda5 24637820 19741428 3638204 85% / usr
/ dev / vda3 3997376 232628 3555036 7%/ var
 


ディスクの状況を除外した後、CPU負荷が特に高い場合:JavaプロセスはCPUの計算をあまり行いません。通常の状況では、CPUは100%から200%の間でなければなりません。この種のCPUサージの状況は、無限ループになるか、 GCをたくさんやっている

jstat -gc pid [interval]コマンドを使用して、JavaプロセスのGCステータスを表示します。

jstat -gc <pid>:gc情報を表示し、gcの数と時間を確認できます。

GCが非常に頻繁である場合、それはメモリリークであるはずです。

 jstack pid> jstack.logを使用して、スレッドスタックを保存します。

 jmap -dump:format = b、file = heap.hprof pidを使用して、ヒープシーンを保存します。

ヒント:ヒープファイルのエクスポートは比較的大きく、デフォルトはバイナリデータです。分析には(jvisualvm)などのJDK独自のツールを使用できます

補足:JVMのdmpファイルを取得するには、2つの方法があります。

        1. JVMの起動時に2つのパラメーターが追加され、OOMEが表示されるとヒープダンプが生成されます。 

                -XX:+ HeapDumpOnOutOfMemoryError

                ヒープファイルアドレスを生成します。

                -XX:HeapDumpPath = / home / test / jvmlogs / 

        2.現在のJVMのdmpファイルは、プログラムに異常が見つかる前に命令を実行することによって直接生成されます

                jmap -dump:live、format = b、file = / opt / soft / heap.hprof pid

最初の方法は、JVMでメモリオーバーフローが発生したときにヒープファイルを自動的に生成することであり、2番目の方法は、実行中にサービスを一時停止することであり、オンライン操作に影響を与えるため、最初の方法をお勧めします。

 


上記の手順はすべて、問題の迅速なトラブルシューティングと特定に役立つ方法ですが、問題を解決するには、特定のコードを分析する必要があります。

 

 

おすすめ

転載: blog.csdn.net/qq_36807862/article/details/89242897