%20Metaspace%20aumenta%20constantemente.png)
Tengo un servidor lucee (ColdFusion) en producción.
Al principio, nos encontramos con un agotamiento de la memoria del sistema operativo. Redujimos la -Xmx2048m
memoria disponible a la mitad y configuramos -XX:MaxMetaspaceSize=1000m
.
Sin embargo, después de un tiempo, el gato de lucee informó errores de OutOfMemory y requirió un reinicio.
Dado que el metaespacio se suma al montón y, de forma predeterminada, no está limitado, esto indica que el metaespacio se está llenando.
Luego agregué un regular jcmd <pid> VM.metaspace
para verificar esta suposición. Por la mañana tengo:
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
y por la tarde:
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
¡Así que el metaespacio está creciendo aproximadamente 8 Mb por día!
Descubrí que JAXB tenía un problema que causaba este comportamiento, así que probé esa solución agregando -Dcom.sun.xml.bind.v2.bytecode.ClassTailor.noOptimize=true
pero no ayudó o tal vez lo empeoró.
¿Cómo puedo saber qué diablos está llenando mi metaespacio?
Respuesta1
Todavía tengo que encontrar una solución a esto, pero hay un ticket abierto. Actualmente tengo que reiniciar mi servidor periódicamente para evitar una falla.
Por favor mira
https://luceeserver.atlassian.net/browse/LDEV-2904
y
https://dev.lucee.org/t/lucee-5-3-5-92-java-non-heap-memory-steadily-increases/6948/23