私たちは、まだ製品化されていない新しいアプリケーションに取り組んでいます。私たちはJava 8を使用しています。私たちが直面している問題は、非ヒープが徐々に増加し、数日でLinuxシステムがクラッシュすることです。
私たちのアプリケーションは tomcat で実行されており、自動展開方法を使用しています。トラブルシューティングの一環として、以下のテストを行いました。
XMX = 4GB
Tomcatを再起動して、新たなスタートを切りました。アプリケーションは以下の統計で開始されました
- ヒープ使用量 = 1.5GB
- 非ヒープ = 200MB
Tomcat の再起動後にユーザー テストを行わずに、自動展開を行いました。同じコードが再度展開されたところ、非ヒープが 2 倍になっていることに気付きました。
- ヒープ使用量 = 1.5GB
- 非ヒープ = 400MB
展開を複数回繰り返しましたが、そのたびに非ヒープが増加しました。デプロイだけでなく、アプリケーション (Tomcat ではない) を開始/停止するだけでも、非ヒープが 200mb 増加します。
基本的に、展開を行うたびに非ヒープが増加するように問題を絞り込みました。注意すべき重要なことは、自動展開中に tomcat を再起動しないことです。各展開後に tomcat の再起動手順を含める必要があるかどうかについての提案を探していますか? または、ヒープ以外にしきい値を設定するために XX:MaxMetaspaceSize パラメータを含める必要がありますか?
通常のヒープ使用量を監視しており、問題はありません。ガベージ コレクションは定期的に発生し、スペースを再利用します。しかし、これは NON-HEAP には当てはまりません。GC が発生しても、NON ヒープからスペースが回収されることはありません。