我在生产中有一个ColdFusion服务器。
一开始,我们遇到操作系统内存耗尽。我们将-Xmx2048m减少到一半可用内存,并设置-XX:MaxMetaspaceSize=1000m。
但是过了一段时间,lucee的tomcat报告了OutOfMemory错误,需要重新启动。
由于metaspace是堆之外的,默认情况下是不受限制的,这意味着metaspace正在填充。
然后,我添加了一个常规的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所以metaspace每天增长约8Mb!
我发现JAXB有一个导致这种行为的问题,所以我尝试通过添加-Dcom.sun.xml.bind.v2.bytecode.ClassTailor.noOptimize=true来进行演练,但是它没有帮助或者可能使它变得更糟。
我怎么才能弄清楚到底是什么东西填满了我的大脑?
发布于 2021-11-04 01:06:41
我还没有找到解决这个问题的解决方案,但它有一个开放的票证,我目前必须定期重新启动我的服务器,以防止崩溃。
请参阅
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
https://serverfault.com/questions/1078822
复制相似问题