Mysterious Ruby processa no servidor Rails

1

Estou tentando localizar um bug em um site do Rails e notei que há processos Ruby recorrentes que estão sobrecarregando a CPU e não desaparecem. Eu gostaria de saber o que está começando e como pará-los ou dar a eles os recursos que eles precisam para concluir e realizar seu trabalho.

Antecedentes: o servidor é o Ubuntu 10.04 LTS. Ruby é 1.9.2-p290. O site é o Rails 3.1.4 e o Passenger 3.0.9 está no Nginx 1.0.8.

O código do site é implantado e pertence a um usuário que não usa a roda com o nome site-runner , portanto, os processos do passageiro devem estar em execução como esse usuário. Esse usuário não possui arquivos crontab.

Isso é o que me faz suspeitar:

top - 13:41:05 up 73 days, 20:26,  2 users,  load average: 2.11, 2.06, 2.28
Mem:    508272k total,   295660k used,   212612k free,    12608k buffers
Swap:  1048572k total,    32020k used,  1016552k free,    42580k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND 
26911 site-run  20   0  227m 116m 2656 R  101 23.4  18:08.55 ruby          
26919 site-run  20   0  227m 116m 2656 R  100 23.4  18:08.50 ruby  
[...]

Eu queria confirmar que não era o Passenger, então usei pstree :

$ pstree -apu
init,1
  |-PassengerWatchd,17903
  |   |-PassengerHelper,17908
  |   |   |-ruby,17912                                                ...
  |   |   |   |-{ruby},17938
  |   |   |   '-{ruby},26888
  |   |   |-{PassengerHelpe},17913
[Collapsed a bunch of Passenger processes]
  |   |   '-{PassengerHelpe},17926
  |   |-PassengerLoggin,17915,nobody
  |   |   '-{PassengerLoggi},17928
  |   |-{PassengerWatch},17907
  |   |-{PassengerWatch},17929
  |   '-{PassengerWatch},17930
  |-cron,2331
  |-getty,7533 -8 38400 tty1
  |-master,2536
  |   |-pickup,26864,postfix -l -t fifo -u -c
  |   |-qmgr,2543,postfix -l -t fifo -u
  |   '-tlsmgr,19889,postfix -l -t unix -u -c
  |-mysqld,23916,mysql
  |   |-{mysqld},23922
[collapsed a bunch of mysql processes]
  |   '-{mysqld},15541
  |-nginx,17931
  |   '-nginx,17932,site-runner      
  |-rsyslogd,2297,syslog -c4
  |   |-{rsyslogd},2303
  |   '-{rsyslogd},2304
  |-ruby,26911,site-runner                                      ...
  |   '-{ruby},26913
  |-ruby,26919,site-runner                                      ...
  |   '-{ruby},26921
  |-sshd,2329
  |   '-sshd,27099
  |       '-sshd,27110,parker
  |           '-bash,27111
  |               '-pstree,27218 -apu
  |-udevd,2108 --daemon
  |   |-udevd,2139 --daemon
  |   '-udevd,2142 --daemon
  '-upstart-udev-br,2066 --daemon

... e há aqueles processos de rubi, 26911 e 26919, não filhos de Nginx ou Passageiros.

Eu matei os processos, mas eles reiniciam.

Como posso descobrir o que esses processos estão fazendo e também concluí-los a concluí-los ou fazê-los desaparecer e ficar longe?

    
por pjmorse 20.03.2012 / 14:45

1 resposta

3

Em top , você pode alternar a exibição do comando completo apertando a tecla "c".

Se você estiver fora do top , também poderá obter o comando completo usando algumas opções ps :

ps -fp 26911

Então, "f" para o comando completo e "p" para especificar o ID do processo em que você está interessado.

Você também pode ver o sistema de arquivos proc no Linux. cat /proc/26911/cmdline mostrará a linha de comando usada para o processo 26911.

    
por 20.03.2012 / 15:22