最近、本番環境が非常に遅くなりました。プロセスの CPU が 200% 使用されました。しかし、それは機能し続けました。サービスを再起動した後、再び正常に機能しました。いくつかの症状があります。パー サバイバー スペース ヒープが長い間空で、ガベージ コレクションに CPU 時間の約 20% が費やされていました。
JVM オプション:
X:+CMSParallelRemarkEnabled, -XX:+HeapDumpOnOutOfMemoryError, -XX:+UseConcMarkSweepGC, - XX:+UseParNewGC, -XX:HeapDumpPath=heapdump.hprof, -XX:MaxNewSize=700m, -XX:MaxPermSize=786m, -XX:NewSize=700m, -XX:ParallelGCThreads=8, -XX:SurvivorRatio=25, -Xms2048m, -Xmx2048m
Arch amd64
Dispatcher Apache Tomcat
Dispatcher Version 7.0.27
Framework java
Heap initial (MB) 2048.0
Heap max (MB) 2022.125
Java version 1.6.0_35
Log path /opt/newrelic/logs/newrelic_agent.log
OS Linux
Processors 8
System Memory 8177.964, 8178.0
添付の写真の詳細情報 非ヒープで問題が発生したとき、使用されたコード キャッシュと使用された cms perm gen は半分に減少しました。
newrelic から情報を取得しました。
問題は、サーバーの動作が非常に遅い理由です。
サーバーが完全に停止することもありますが、PDFBox に問題があり、一部の PDF をアップロードして一部のフォントを含むと、JVM がクラッシュすることがわかりました。
詳細: 私は、Old gen が毎日いっぱいになっていることを観察しました。今は毎日サーバーを再起動しています。再起動後はすべてうまくいきますが、古い世代は翌日までいっぱいになり、再起動が必要になるまでサーバーの速度が低下します.