元空间内存溢出
典型现象/特征
- 表单相关功能超时或相关功能异常
- pod宕机或重启
排查确认步骤
可按照以下证据链进行确认:
- 1.可先通过异常接口定位具体异常服务,确认服务是否发生宕机或重启;
- 2.检查宕机前或重启前日志中是否出现
OutOfMemoryError: Metaspace (或 PermGen space) - 3.再查看服务挂载目录,确认是否生成
heapdump文件;
如果上面3条信息都符合,可确认为元空间内存溢出。
更多判断依据参考如下:
- 1. 如果异常业务点主要集中在表单相关功能,且日志中存在表单加载、卸载等信息,可进一步支持应用元空间内存溢出的判断。
- 2.结合服务非堆内存监控,确认是否存在非堆内存持续高位运行(通常大于 85%)或异常时段监控突然缺失;
- 3.接着通过巡检工具或人工检查应用
yaml中的资源配置,确认java中内存配置和容器的limit、request等参数是否明显偏低或配置不合理,如不合理则需要在后续恢复时调整。
分析工具
常见应急恢复策略
text
- 修改对应异常服务的部署模板,做以下调整(调整需参考服务推荐配置和客户使用量等综合分析)
1、确认为元空间不足,调整java启动参数中: -XX:MetaspaceSize -XX:MaxMetaspaceSize
一般可再原配置基础上调30%-50%
2、还需同步调整部署yaml文件,按照java启动参数的调整,同样增加yaml中资源限制部分:
resources:
limits:
memory: #根据java配置中增加适当调整
requests:
memory: #根据java配置中增加适当调整