Linux 中怎么防止关键进程被系统误杀

阿磊吖_9356

阿磊吖_9356

2026-10-19

422人浏览

原创

防止关键进程被oom killer误杀,需调低oom_score_adj值(如-500)、降低swappiness、收紧dirty_ratio参数、禁用vm.overcommit_memory=2,并通过systemd设置oomscoreadjust和memorylimit实现双重保障。

linux 中怎么防止关键进程被系统误杀

防止关键进程被系统误杀,核心是让内核在内存紧张时“绕着走”——不把它当作 OOM Killer 的首选目标。这不是靠重启或加内存解决的临时手段,而是通过调整内核对进程的“危险评分”和回收偏好来实现的。

调低 oom_score_adj 值

Linux 用 oom_score_adj(范围 -1000 到 +1000)决定进程被杀的优先级:值越高越容易被杀,-1000 表示完全免疫。关键服务应设为负值:

  • 给 nginx 主进程设为 -500:echo -500 > /proc/$(pgrep -f "nginx: master")/oom_score_adj
  • Java 应用启动时直接指定:java -XX:+UseContainerSupport -Dsun.java.command="myapp" -jar app.jar,再配合 systemd 的 OOMScoreAdjust=-500
  • 注意:该值只对当前进程有效,子进程继承父进程值,但需在进程启动后立即设置,否则可能已被 kill

控制内存回收倾向,减少触发 OOM 的机会

OOM 往往不是因为内存绝对不够,而是因为内核被迫进入同步回收(Direct Reclaim),卡住分配路径。可通过以下参数缓解:

Obsidian (Linux)
Obsidian (Linux)

操作 Obsidian 库(纯 Markdown 笔记),并通过 notesmd-cli 实现自动化。

下载
  • 降低 swappiness(默认 60):设为 1~10,让内核更倾向回收 Page Cache 而非换出匿名页,避免 Java 堆外内存或 mmap 区域被误判为可牺牲对象
  • 收紧 dirty_ratio 和 dirty_background_ratio:例如设为 10 和 5,加快脏页回写,防止 write 系统调用被阻塞进而拖垮整体响应
  • 确认 vm.overcommit_memory 不为 2:设为 1(乐观分配)更利于稳定运行,避免因 overcommit_ratio 计算偏差导致提前触发 OOM

用 systemd 做双重保障

如果进程由 systemd 管理,可在 service 文件中加入:

  • OOMScoreAdjust=-500:持久化 oom_score_adj 设置
  • MemoryLimit=4G 或 MemoryMax=4G:硬限制内存上限,让 cgroup 在超限时先触发内存压力通知,而非等内核全局 OOM
  • Restart=on-failure + RestartSec=5:即使被杀也能快速拉起,降低业务中断感

验证与监控不能少

设完不等于万事大吉,得持续盯住两个关键点:

  • 定期检查:cat /proc/$(pidof your_process)/oom_score_adj 确认值未被重置
  • 监听 OOM 事件:dmesg -T | grep "Killed process" 每小时跑一次,发现就立刻溯源
  • 观察 USS 趋势:用 awk '/^USS:/ {print $2}' /proc/PID/smaps 抓取独占内存,持续上涨说明泄漏仍在,防护只是掩耳盗铃

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

linux linux进程 linux入门

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

457

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

940

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

3012

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

996

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

889

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

454

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

2736

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

5112

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

807

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习