OOM(Out Of Memory)是什么?
node_vmstat_oom_kill
是 Prometheus
的 node_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:
-
监控内存使用:可以使用
Prometheus
和node_exporter
监控系统的内存使用情况,包括总内存、可用内存、缓存和交换空间等信息。指标如node_memory_MemAvailable_bytes
可以帮助你了解当前系统的内存压力。 -
分析 OOM 事件:
- 使用
dmesg
命令查看 OOM Killer 的日志,确认哪些进程因为 OOM 而被杀死。例如:dmesg | grep -i "out of memory"
- 使用
-
调整系统内存设置:
- 增加物理内存或调整虚拟内存(swap)的大小,以避免频繁触发 OOM。
- 优化内存使用,关闭或调整那些内存占用较大的进程。
-
调整 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 事件的频繁发生。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
2022-10-08 mysql binlog查看