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

따라서 메타공간은 하루에 약 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

관련 정보