saowu's Blog

Pod容器重启导致内存突增排查

2024-01-08 · 2 min read
Kubernetes 日记

异常告警

2023年1月8日,告出HostOomKillDetected警报,192.168.204.66机器配置为8C16G

   

服务发生异常重启

   

Grafana显示异常曲线

内存趋势(Used:7.998GiB---9.927GiB---1.934GiB)

   
   

服务资源分配情况

   

容器日志

  • 10:19:30.617旧日志中断,没有异常日志
  • 10:19:33.749新容器开始启动
  • 10:19:47.409新容器启动完成

问题分析与猜测

该服务内存Limit设置为8GiB,异常前内存使用率在7.998GiB,且继续增长,超过资源 limit 的容器都将被 kubelet 杀死并重启。所以该服务在10:19:30触发Limit限制,进而重启。重启有两个动作,回收旧容器,启动新容:

  • 10:19:30 旧容器开始回收,内存使用=8GiB
  • 10:19:33 新容器开始启动
  • 10:19:47 新容器启动完成
  • 10:24:15 旧容器回收完毕,内存使用=1.934GiB(新容器初始内存使用值)

由于,10:19:33---10:24:15期间(见Grafana图2),新容器正在启动,旧容器正在回收,两个容器同时存在(8GiB+1.934GiB),导致Pod内存突增到9.927GiB,导致节点内存紧张触发HostOomKillDetected报警。

问题验证

启动任一Java服务进行测试,运行稳定后,进入容器执行kill 1,观察Pod内存曲线,出现高峰并恢复,高峰前后内存值之和,约等于峰值,可验证通过。

   

✅ 验证通过

Copyright © 2020 - 2024 saowu. All Right Reserved
Powered by Gridea