Я работаю в компании, которая запускает приложение ruby, которое зависит от httpd + passenger.
- ОС: Centos 7.4
- Версия для пассажиров: 5.2.0-1.el7.x86_64
- Httpd версия: 2.4.6-67.el7
Я заметил, что в случае утечки памяти в приложении ruby менеджер OOM в Linux никогда не убьет процесс пассажира, который использует всю память, потому что процесс Passenger Core изменяет значение oom_adj на -17 (что отключает) с процессы убийства разветвляются из него.
Я подтвердил, что httpd работает с oom_adj == 0
, но Passenger Core, который разветвляется от httpd, работает с oom_adj == -17
. Я уже несколько раз читал документы по конфигурации для пассажиров и не могу найти опцию конфигурации, которая позволяет мне изменить значение обратно на 0.
Ядро Passenger работает с преднамеренным значением oom_adj -17, или я обнаружил ошибку?
Также есть ли способ настроить Phusion Passenger для работы с требуемым значением oom_adj?
sudo systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
Active: active (running) since Tue 2018-04-24 21:37:12 UTC; 26s ago
Docs: man:httpd(8)
man:apachectl(8)
Process: 31269 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=0/SUCCESS)
Main PID: 31280 (httpd)
Status: "Total requests: 4; Current requests/sec: 0.3; Current traffic: 1.2KB/sec"
CGroup: /system.slice/httpd.service
├─31280 /usr/sbin/httpd -DFOREGROUND
├─31307 Passenger watchdog
├─31310 Passenger core
├─31330 /usr/sbin/httpd -DFOREGROUND
├─31331 /usr/sbin/httpd -DFOREGROUND
├─31332 /usr/sbin/httpd -DFOREGROUND
├─31333 /usr/sbin/httpd -DFOREGROUND
├─31334 /usr/sbin/httpd -DFOREGROUND
├─31345 Passenger AppPreloader: /srv/websites/{{ domain }}/current
├─31415 /usr/sbin/httpd -DFOREGROUND
├─31434 Passenger RubyApp: /srv/websites/{{ domain }}/current (production)
├─31444 Passenger RubyApp: /srv/websites/{{ domain }}/current (production)
├─31458 Passenger RubyApp: /srv/websites/{{ domain }}/current (production)
└─31515 Passenger RubyApp: /srv/websites/{{ domain }}/current (production)
cat /proc/31280/oom_adj
0
cat /proc/31310/oom_adj
-17
cat /proc/31434/oom_adj
-17