记录一次内存问题排查
需求:要离线导入一批数据。因此我采用了XxlJob的方式,方便后续导入数据。
出现问题:导入过程中遇到了Pod重启,中止导入的情况。因此开始排查。
排查思路:中止后,新的pod没有重启事件,也就是说运行过程中出现的异常。可以借助命令,查看重启之前的日志:
kubectl logs <pod-name> -n <namespace> --previous --tail=<number>
找到如下内容:Not enough space (12)
初步判定是空间不足。代码逻辑是导入离线报告文档,报告文档较长,这部分占用了不少内存,并且因为需要提供给算法侧base64编码后的原文,所以难以减少内存空间占用。因此修改deployment的limit限制,以及Java启动服务时,Xms和Xmx限制。
- Requests:
3Gi
- Limits:
4Gi
JVM 参数:-Xms3072m -Xmx3072m
JVM初始和最大堆内存。
重启之后问题消失。