最近、生産環境が非常に遅くなりました。プロセスのCPUは200%を要しました。しかし、それは動作し続けた。サービスを再開した後、正常に機能しました。私はいくつかの症状があります: Par survivor spaceヒープは長い間空であり、ガベージコレクションはCPU時間の約20%を占めました。旧世代のヒープがいっぱいで、エデンとサバイバーが少なく空きがほとんどありません
JVMオプション:添付PIC で
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
詳細情報の問題は、非ヒープ使用されるコードキャッシュ上で発生し、GENが半分に低下したCMSパーマを使用した場合。
私はnewrelicから情報を取った。
なぜサーバーが遅く動作するのですか?
サーバーが完全に停止することがありますが、PDFをアップロードするときにPDFBoxに問題があり、JVMがクラッシュするフォントが含まれていることがわかりました。
詳細情報:私は毎日、古い世代がいっぱいになっていることを観察しました。今度は毎日サーバーを再起動します。再起動後はすてきですごくいいですが、古い世代は翌日までいっぱいになり、サーバーは再起動が必要になるまで遅くなります。
それでは、どうしたのですか? –
あなたのパーマスペースが使い果たされ、あなたの新しいスペースがほとんど空であれば、新しいスペースのサイズを小さくしてperm genにさらにスペースを割り当てるのは意味がありませんか?これを行い同じ問題が発生すると、メモリリークが発生する可能性があります。 – TMN
permには、コンパイルされたクラスとその他のものが含まれています。私が見る問題は、旧世代が増えていることです。私は毎日サーバを再起動して正常に戻らなければなりません。 perm genグラフィック(および残りの部分)がダウンしたときには、tomcatの再起動があります。 – Bogdan