You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Prometheus触发HostOutOfMemory告警推送Slack频道相关问题咨询

HostOutOfMemory告警排查与处理方案

对应告警规则

alert: HostOutOfMemory
expr: node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes * 100 < 10
for: 2m
labels:
  severity: critical
annotations:
  summary: Host only has 10% memory left (instance {{ $labels.instance }}). Pod eviction will be triggered.

规则含义:当主机可用内存占总内存的比值低于10%且状态持续2分钟时,将触发严重级别告警,提示对应实例主机仅剩余10%可用内存,即将触发Pod驱逐。

排查步骤

  • 登录告警对应的实例节点,执行free -h、top(运行后按shift+m按内存占用排序)或htop命令,确认节点当前真实内存使用率,排除Prometheus指标采集异常导致的误告警
  • 确认内存使用率确实达到告警阈值后,执行kubectl top node <目标节点名>、kubectl get pods -A --field-selector spec.nodeName=<目标节点名>命令,查看节点上运行的所有Pod内存占用情况,定位内存占用最高的前几个负载
  • 检查高内存占用Pod是否存在内存泄漏:执行kubectl logs <Pod名称> -n <对应命名空间>查看Pod运行日志,同时查看该Pod近7天的内存监控曲线,判断是流量突增导致的合理内存占用,还是程序BUG导致内存持续上涨不释放
  • 检查节点是否存在非K8s管理的异常进程占用内存:执行ps aux --sort=-%mem查看系统全量进程,排查僵尸进程、恶意进程、或运维手动启动未纳入资源管控的程序
  • 检查节点OOM日志:执行dmesg | grep -i oom,确认近期是否已有进程被系统OOM Killer主动杀掉,评估当前业务受影响程度

处理方案

  • 误告警场景:检查Prometheus node-exporter组件是否运行正常,修复指标采集异常后手动解除告警即可
  • 临时流量突增场景:优先对高内存占用的业务Pod进行水平扩容,将流量分散到多个节点;如果集群资源充足,也可直接对节点进行内存规格垂直扩容
  • 程序内存泄漏场景:先对异常Pod执行滚动重启临时缓解内存压力,同步告知业务开发团队定位内存泄漏代码问题,发布修复版本后彻底解决
  • 异常进程占用场景:非必要进程直接终止,需要保留的进程要补充资源限制,纳入K8s workload管理避免无限制占用节点资源
  • 长期优化:给所有业务Pod配置合理的resources.limits.memory资源限制,避免单Pod异常占满整个节点内存;调整K8s节点Pod驱逐阈值,优先级较低的Pod优先被驱逐,保障核心业务运行稳定

内容的提问来源于stack exchange,提问作者MANU N

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 18:45:00