news 2026/6/10 2:04:34

Linux centos7 OOM Killer 配置详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux centos7 OOM Killer 配置详解

在 CentOS 7 中,OOM Killer(Out-of-Memory Killer)是 Linux 内核在系统内存严重不足时,强制终止某些进程以释放内存的机制。

🔍 查看 OOM Killer 日志

1. 系统日志查看

# 查看最近发生的 OOM 事件sudogrep-i"oom\|out of memory"/var/log/messages# 使用 dmesg 查看内核日志sudodmesg|grep-i"oom\|killed process"# 查看完整的 OOM 信息sudodmesg-T|grep-B5 -A5"Out of memory\|Killed process"

2. 查看特定进程是否被 OOM Killer 杀死

# 查看进程退出信号(如果信号是 9,可能是 OOM)cat/var/log/messages|grep"signal 9"

⚙️ OOM Killer 配置参数

关键参数位置:

/proc/sys/vm/overcommit_memory /proc/sys/vm/overcommit_ratio /proc/sys/vm/panic_on_oom /proc/sys/vm/swappiness

查看当前配置:

# 查看 OOM 相关参数sysctl -a|grepoom# 查看 overcommit 设置cat/proc/sys/vm/overcommit_memory# 0 = 启发式overcommit(默认)# 1 = 总是 overcommit# 2 = 禁止 overcommit

调整 OOM 策略:

# 临时修改echo1>/proc/sys/vm/overcommit_memory sysctl vm.overcommit_memory=1# 永久修改(在 /etc/sysctl.conf 中添加)echo"vm.overcommit_memory = 1">>/etc/sysctl.conf sysctl -p

🛡️ 控制进程的 OOM 优先级

1. 查看进程的 OOM 分数

# 查看进程的 OOM 分数(分数越高越容易被杀)cat/proc/<PID>/oom_score# 查看 OOM 调整值(-1000 到 1000)cat/proc/<PID>/oom_score_adjcat/proc/<PID>/oom_adj# 旧版本

2. 调整进程的 OOM 优先级

# 保护重要进程(设置负值,不容易被杀死)echo-100>/proc/<PID>/oom_score_adj# 标记不重要进程(设置正值,优先被杀死)echo100>/proc/<PID>/oom_score_adj

3. 在启动时设置 OOM 优先级

# 使用 systemd 服务保护进程[Service]OOMScoreAdjust=-500

🔧 诊断 OOM 问题

1. 内存使用分析

# 查看内存使用情况free-htop-o %MEM# 按内存排序查看进程psaux --sort=-%mem|head-20# 查看 slab 内存使用slabtop

2. 监控工具

# 使用 atop 监控atop# 使用 htop 交互式查看htop# 使用 earlyoom(用户空间 OOM killer)# 安装:yum install epel-release && yum install earlyoom

📊 OOM Killer 调优建议

防止 OOM 的配置:

# 1. 减少交换倾向(减少使用 swap)sysctl vm.swappiness=10# 2. 禁止在 OOM 时 panicsysctl vm.panic_on_oom=0# 3. 调整 overcommit 策略sysctl vm.overcommit_memory=2sysctl vm.overcommit_ratio=80# 4. 调整内存分配策略sysctl vm.admin_reserve_kbytes=8192sysctl vm.user_reserve_kbytes=8192

📝 永久配置 OOM 参数

/etc/sysctl.d/99-oom.conf中添加:

vm.overcommit_memory = 2 vm.overcommit_ratio = 80 vm.swappiness = 10 vm.panic_on_oom = 0 vm.oom_kill_allocating_task = 0

应用配置:

sysctl -p /etc/sysctl.d/99-oom.conf

🎯 实用脚本:检查 OOM 风险

#!/bin/bash# check-oom-risk.sh# 检查内存使用率MEM_USED=$(free|awk'/Mem:/ {print $3/$2 * 100.0}')echo"内存使用率:${MEM_USED}%"# 检查交换空间使用SWAP_USED=$(free|awk'/Swap:/ {print $3/$2 * 100.0}')echo"Swap使用率:${SWAP_USED}%"# 检查 OOM 分数最高的进程echo-e"\nOOM 风险最高的进程:"ps-eo pid,comm,%mem --sort=-%mem|head-10# 检查是否有大内存进程echo-e"\n检查大内存进程 (>10%):"ps-eo pid,comm,rss --sort=-rss|awk'$3 > 10000 {print}'

💡 建议与注意事项

  1. 重要服务保护:数据库、Web 服务器等关键服务应设置较低的 OOM 分数
  2. 监控设置:配置监控系统报警,当内存使用超过 80% 时及时处理
  3. swap 配置:确保有足够的 swap 空间作为缓冲
  4. 应用优化:优化应用程序内存使用,避免内存泄漏
  5. 使用 cgroups:通过 cgroups 限制进程组的内存使用

通过合理配置 OOM Killer 参数和监控内存使用,可以有效减少因内存不足导致的系统不稳定问题。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/5 19:37:47

协程性能翻倍不是梦:深入剖析async await底层原理与优化技巧

第一章&#xff1a;协程性能翻倍不是梦&#xff1a;async await初探在现代高并发应用开发中&#xff0c;传统的多线程模型因资源消耗大、上下文切换成本高而逐渐显现出瓶颈。协程&#xff08;Coroutine&#xff09;作为一种轻量级的并发处理机制&#xff0c;凭借其非阻塞特性和…

作者头像 李华
网站建设 2026/6/5 20:50:02

大数据毕设项目推荐-基于python+django+vue服装品类趋势及消费者洞察数据分析可视化系统 【附源码+文档,调试定制服务】

java毕业设计-基于springboot的(源码LW部署文档全bao远程调试代码讲解等) 博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、…

作者头像 李华
网站建设 2026/6/5 19:42:03

Claude code--使用心得

Claude Code&#xff08;Claude 的终端代理式编程工具&#xff0c;由 Anthropic 推出&#xff09;从 2025 年中开始在开发者圈子里迅速火起来&#xff0c;尤其在 2025 下半年到 2026 年初&#xff0c;使用人数和讨论量都呈爆发式增长。很多人把它称为“目前最强的 agentic codi…

作者头像 李华
网站建设 2026/6/6 6:40:09

为什么顶尖Python工程师都在用async await?揭秘高并发编程的秘密武器

第一章&#xff1a;为什么你需要掌握async await在现代异步编程中&#xff0c;async await 已成为提升代码可读性与维护性的核心工具。它让开发者能够以同步的写法处理异步操作&#xff0c;避免了传统回调地狱&#xff08;Callback Hell&#xff09;带来的嵌套混乱。更清晰的逻…

作者头像 李华
网站建设 2026/6/9 19:29:58

2026年AI法规更新:软件测试从业者的专业应对策略

一、引言&#xff1a;AI法规浪潮下的测试新挑战 2026年&#xff0c;全球AI监管进入严苛时代。中国新修订的《网络安全法》于1月1日正式实施&#xff0c;首次将AI安全纳入法定框架&#xff0c;要求企业对AI系统进行全生命周期风险管理&#xff0c;违规处罚可达千万级罚款。欧盟…

作者头像 李华