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

Другие вопросы по тегам