记录一次内存问题排查

48 阅读1分钟

需求:要离线导入一批数据。因此我采用了XxlJob的方式,方便后续导入数据。

出现问题:导入过程中遇到了Pod重启,中止导入的情况。因此开始排查。

排查思路:中止后,新的pod没有重启事件,也就是说运行过程中出现的异常。可以借助命令,查看重启之前的日志:

kubectl logs <pod-name> -n <namespace> --previous --tail=<number>

找到如下内容:Not enough space (12)

image.png

初步判定是空间不足。代码逻辑是导入离线报告文档,报告文档较长,这部分占用了不少内存,并且因为需要提供给算法侧base64编码后的原文,所以难以减少内存空间占用。因此修改deployment的limit限制,以及Java启动服务时,Xms和Xmx限制。

  • Requests: 3Gi
  • Limits: 4Gi

JVM 参数-Xms3072m -Xmx3072m JVM初始和最大堆内存。

重启之后问题消失。