Таинственные процессы 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.