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

CentOS7.4下Httpd+Passenger部署Ruby应用OOM不杀进程求助

解决Passenger默认oom_adj/oom_score_adj配置问题

我来帮你搞定这个Passenger OOM优先级的问题——这个场景我之前处理过好几次,其实Passenger本身就提供了官方配置项来调整OOM参数,不用手动去修改进程的数值,具体操作步骤如下:

首先先理清楚背景:CentOS 7 实际用的是oom_score_adj(取值范围-1000到1000),你看到的oom_adj=-17是旧版参数,对应oom_score_adj=-1000,也就是完全禁止OOM杀死该进程,这正是Passenger的默认设置,也是导致内存泄漏进程无法被清理的原因。

1. 修改Passenger配置文件

找到你的Passenger配置文件,通常是全局配置/etc/httpd/conf.d/passenger.conf,如果只需要针对特定站点调整,也可以修改对应虚拟主机的.conf文件(比如/etc/httpd/conf.d/your-app.conf)。

在配置文件中添加或修改以下指令:

PassengerOOMScoreAdjust 0

你可以根据需求调整这个数值:

  • 设为0和Httpd保持一致,让OOM管理器可以正常评估进程优先级
  • 如果想让Passenger进程更容易被OOM杀死(比如内存泄漏时优先清理),可以设为正数(比如500);想降低被杀死的概率则设为负数(但不要设为-1000)

2. 重启Httpd使配置生效

执行命令重启Httpd服务,让新配置生效:

systemctl restart httpd

3. 验证配置是否生效

先找到Passenger相关进程的PID:

ps aux | grep passenger

然后查看该进程的oom_score_adj值:

cat /proc/<你的Passenger进程PID>/oom_score_adj

如果输出是你设置的数值(比如0),说明配置已经成功生效。

额外补充

  • PassengerOOMScoreAdjust指令会覆盖Passenger默认的-1000设置,无论是Passenger核心进程还是它派生的Ruby应用进程,都会应用这个优先级
  • 如果你是用Passenger Standalone模式(而非和Httpd集成),启动时可以添加参数直接设置:
    passenger start --oom-score-adjust 0
    

内容的提问来源于stack exchange,提问作者Shaun H

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:34:45