OOM(Out Of Memory)是什么?

node_vmstat_oom_killPrometheusnode_exporter 中用于监控内存管理的一项指标。这个指标表示系统中由于内存不足(Out Of Memory, OOM)而被杀死的进程次数

OOM(Out Of Memory)是什么?

当系统的物理内存和交换空间耗尽时,操作系统会启动 OOM Killer(Out Of Memory Killer),选择并强制杀死某个占用大量内存的进程,以释放内存供系统继续运行。OOM 事件通常发生在系统面临严重内存压力时,这时一些进程会被迫终止,避免系统完全崩溃。

node_vmstat_oom_kill 具体检测的内容

node_vmstat_oom_kill 监控的是系统中被 OOM Killer 杀死的进程的累计次数。当系统发生内存不足时,OOM Killer 会选择某些进程进行终止,这个指标会递增,显示 OOM Killer 成功杀死了多少个进程。

关键点:

  • node_vmstat_oom_kill 是一个计数器:它的值表示自系统启动以来,OOM Killer 杀死的进程次数,而不是正在被杀死的进程数量。因此,如果你监控到这个值的增加,说明系统最近发生了内存不足的情况。

  • 内存压力或资源不足的信号:当 node_vmstat_oom_kill 频繁增加时,通常意味着系统面临严重的内存不足,可能需要增加物理内存、减少内存占用进程,或者检查是否有内存泄漏的问题。

如何应对 OOM:

  1. 监控内存使用:可以使用 Prometheusnode_exporter 监控系统的内存使用情况,包括总内存、可用内存、缓存和交换空间等信息。指标如 node_memory_MemAvailable_bytes 可以帮助你了解当前系统的内存压力。

  2. 分析 OOM 事件

    • 使用 dmesg 命令查看 OOM Killer 的日志,确认哪些进程因为 OOM 而被杀死。例如:
      dmesg | grep -i "out of memory"
      你可以查看哪些进程在 OOM 事件中被终止,以及内存使用情况。
  3. 调整系统内存设置

    • 增加物理内存或调整虚拟内存(swap)的大小,以避免频繁触发 OOM。
    • 优化内存使用,关闭或调整那些内存占用较大的进程。
  4. 调整 OOM Killer 行为

    • 可以通过调整进程的 oom_score_adj 值来更精细地控制哪些进程应该在 OOM 情况下优先被杀死。

其他相关指标

  • node_memory_MemAvailable_bytes:系统中当前可用的内存量。
  • node_memory_SwapFree_bytes:系统中空闲的交换空间量。
  • node_vmstat_pgmajfault:重大页面错误的次数,通常意味着系统频繁使用交换空间,可能预示着即将发生 OOM。

总结

node_vmstat_oom_kill 是用于检测主机上由于内存不足而被 OOM Killer 杀死的进程次数的指标。如果发现该指标的值不断增加,说明系统的内存资源不足,需要检查内存使用情况,并采取措施避免 OOM 事件的频繁发生。

 

posted @   不会跳舞的胖子  阅读(233)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
历史上的今天:
2022-10-08 mysql binlog查看
点击右上角即可分享
微信分享提示