Metaspace耗尽导致OOM问题
一、问题背景
生产检测到两台服务器内存仅剩50%,且CPU飙升到60%,产生告警。现网用户反映系统响应缓慢。
二、定位问题
1:通过主机名定位程序日志
2:查看全部应用日志并下载到本地
搜索Error关键字,发现是Metaspace空间不足,引起的OutOfMemory异常。Metaspace元空间是Java虚拟机中用于存放被加载的class数据,由于创建过多对象,导致元空间不足,引发OOM。
Caused by :java.lang.OutOfMemoryError:Metaspace
三、解决方案
1:根据错误日志信息,发现存在线程池嵌套线程池问题,所以调整线程池的排队队列主线程池从500改为400,从线程池队列从100改为50。
2:调整MaxMetaspaceSize大小,从原来512M调整到1024M,后续持续观察内存健康状况,适当动态调整。
-XX:MaxMetaspaceSize=1024M