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?