Таинственные процессы Ruby на сервере Rails
Я пытаюсь найти ошибку на сайте Rails и заметил, что есть повторяющиеся процессы Ruby, которые загружают процессор и не исчезают. Я хотел бы выяснить, что их начинает и как их остановить или дать им ресурсы, необходимые для завершения и выполнения своей работы.
Предыстория: сервер Ubuntu 10.04 LTS. Ruby - это 1.9.2-p290. Сайт Rails 3.1.4, а Passenger 3.0.9 на Nginx 1.0.8.
Код сайта развернут и принадлежит не-колесному пользователю с именем site-runner
, поэтому процессы Passenger должны быть запущены от имени этого пользователя. У этого пользователя нет файла crontab.
Вот что делает меня подозрительным:
вверх - 13:41:05 до 73 дней, 20:26, 2 пользователя, средняя загрузка: 2.11, 2.06, 2.28 Память: всего 508272 КБ, использовано 295660 КБ, свободно 212612 КБ, буферы 12608 КБ Обмен: всего 1048572 КБ, использовано 32020 КБ, 1016552 КБ свободно, кэшировано 42580 КБ. PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ КОМАНДА 26911 на месте 20 0 227 м 116 м 2656 R 101 23,4 18:08,55 рубин 26919 на месте 20 0 227 м 116 м 2656 R 100 23,4 18:08,50 рубин [...]
Я хотел подтвердить, что это не Пассажир, поэтому я использовал pstree
:
$ pstree -apu первонач,1 |-PassengerWatchd,17903 | |-PassengerHelper,17908 | | |-руби,17912 ... | | | |-{} рубин,17938 | | | `-{} рубин,26888 | | |-{PassengerHelpe},17913 [Свернул кучу процессов Пассажира] | | `-{PassengerHelpe},17926 | нет |-PassengerLoggin,17915, никто | | `-{PassengerLoggi},17928 | |-{PassengerWatch},17907 | |-{PassengerWatch},17929 | `-{PassengerWatch},17930 |-Cron,2331 |-getty,7533 -8 38400 tty1 |-Master,2536 | |-pickup,26864, постфикс -l -tfifo -u -c | |-qmgr,2543, постфикс -l -tfifo -u | `-tlsmgr,19889, постфикс -l -t unix -u -c | -Mysqld,23916, MySQL | | - {туздЫ},23922 [рухнула куча процессов mysql] | `-{} туздЫ,15541 |-Nginx, 17931 | `-Nginx, 17932, сайт-бегун | -rsyslogd, 2297, syslog -c4 | | - {rsyslogd}, 2303 | `- {rsyslogd}, 2304 | -ruby, 26911, управляющий сайтом... | `- {} рубин, 26913 | -ruby, 26919, управляющий сайтом... | `- {} рубин, 26921 | -Sshd, 2329 | `-Sshd, 27099 | `-Sshd, 27110, Паркер | `-Bash, 27111 | `-прессе, 27218 -апу | -udevd, 2108 --daemon | | -udevd, 2139 --daemon | `-udevd, 2142 --daemon `-upstart-udev-br, 2066 --daemon
... и есть эти рубиновые процессы, 26911 и 26919, а не дети Nginx или Passenger.
Я убил процессы, но они перезапускаются.
Как я могу выяснить, что делают эти процессы, и либо убедить их завершиться, либо заставить их уйти и остаться в стороне?
1 ответ
В top
Вы можете переключать отображение полной команды, нажимая клавишу "c".
Если ты из top
Вы также можете получить полную команду, используя некоторые ps
опции:
ps -fp 26911
Итак, "f" для полной команды и "p" для указания интересующего вас ID процесса.
Вы также можете посмотреть на файловую систему proc в Linux. cat /proc/26911/cmdline
покажет командную строку, используемую для процесса 26911.