JVM (lucee) メタスペースは絶えず増加しています

JVM (lucee) メタスペースは絶えず増加しています

運用環境に lucee (ColdFusion) サーバーがあります。

最初は OS のメモリ不足に遭遇しました。 を-Xmx2048m使用可能なメモリの半分に減らし、 を設定しました-XX:MaxMetaspaceSize=1000m

しかし、しばらくすると、lucee の tomcat が OutOfMemory エラーを報告し、再起動が必要になりました。

メタスペースはヒープに加えてデフォルトで制限されていないため、メタスペースがいっぱいになっていることを示します。

次に、この仮定を検証するために定期的なものを追加しましたjcmd <pid> VM.metaspace。朝は次のようになりました。

 garbage-first heap   total 1572864K, used 959885K [0x0000000080000000, 0x0000000100000000)
  region size 1024K, 249 young (254976K), 18 survivors (18432K)
 Metaspace       used 99985K, capacity 102839K, committed 104996K, reserved 1114112K
  class space    used 7301K, capacity 8154K, committed 8320K, reserved 1015808K

そして夕方には:

 garbage-first heap   total 1616896K, used 556546K [0x0000000080000000, 0x0000000100000000)
  region size 1024K, 25 young (25600K), 5 survivors (5120K)
 Metaspace       used 108125K, capacity 111035K, committed 113828K, reserved 1122304K
  class space    used 7509K, capacity 8463K, committed 8704K, reserved 1015808K

つまり、メタスペースは 1 日あたり約 8Mb ずつ増加しています。

JAXB にこの動作を引き起こす問題があることがわかったので、追加して回避策を試しましたが-Dcom.sun.xml.bind.v2.bytecode.ClassTailor.noOptimize=true、役に立たず、むしろ悪化したかもしれません。

一体何が私のメタスペースを埋め尽くしているのかをどうやって知ることができるのでしょうか?

答え1

これに対する解決策はまだ見つかっていませんが、これに関するオープンチケットがあります。現在、クラッシュを防ぐためにサーバーを定期的に再起動する必要があります。

参照してください

https://luceeserver.atlassian.net/browse/LDEV-2904

そして

https://dev.lucee.org/t/lucee-5-3-5-92-java-non-heap-memory-steadily-increases/6948/23

関連情報