Ubuntu

Rails 伺服器上的神秘 Ruby 程序

  • March 20, 2012

我試圖在 Rails 站點上尋找一個錯誤,我注意到有重複的 Ruby 程序佔用 CPU 並且不會消失。我想弄清楚是什麼開始了他們,以及如何阻止他們或為他們提供完成和完成工作所需的資源。

背景:伺服器是 Ubuntu 10.04 LTS。紅寶石是 1.9.2-p290。該站點是 Rails 3.1.4,Passenger 3.0.9 在 Nginx 1.0.8 上。

站點程式碼由名為 的非輪使用者部署和擁有site-runner,因此乘客程序應該以該使用者身份執行。該使用者沒有 crontab 文件。

這就是讓我懷疑的原因:

頂部 - 13:41:05 73 天,20:26,2 個使用者,平均負載:2.11、2.06、2.28
記憶體:總計 508272k,已使用 295660k,空閒 212612k,12608k 緩衝區
交換:總計 1048572k,已使用 32020k,免費 1016552k,記憶體 42580k

PID 使用者 PR NI VIRT RES SHR S %CPU %MEM TIME+ 命令
26911 現場執行 20 0 227m 116m 2656 R 101 23.4 18:08.55 紅寶石 
26919 現場執行 20 0 227m 116m 2656 R 100 23.4 18:08.50 紅寶石 
[...]

我想確認這不是乘客,所以我使用了pstree

$ pstree -apu
熱量,1
|-PassengerWatchd,17903
| | -乘客助手,17908
| | |-紅寶石,17912 ...
| | | |-{紅寶石},17938
| | | `-{紅寶石},26888
| | | - {乘客幫助},17913
[折疊一堆Passenger程序]
| | `- {乘客幫助},17926
| |-PassengerLoggin,17915,沒有人
| | `- {PassengerLoggi},17928
| |-{乘客觀察},17907
| |-{乘客觀察},17929
| `-{乘客觀察},17930
|-cron,2331
|-getty,7533 -8 38400 tty1
|-主人,2536
| |-pickup,26864,後綴 -l -t fifo -u -c
| |-qmgr,2543,後綴 -l -t fifo -u
| `-tlsmgr,19889,後綴 -l -t unix -u -c
|-mysqld,23916,mysql
| |-{mysqld},23922
【折疊一堆mysql程序】
| `-{mysqld},15541
|-nginx,17931
| `-nginx,17932,站點執行器 
|-rsyslogd,2297,系統日誌-c4
| | - {rsyslogd},2303
| `- {rsyslogd},2304
|-ruby,26911,站點執行器 ...
| `-{紅寶石},26913
|-ruby,26919,站點執行器 ...
| `-{紅寶石},26921
|-sshd,2329
| `-sshd,27099
| `-sshd,27110,帕克
| `-bash,27111
| `-pstree,27218 -apu
|-udevd,2108 --守護程序
| |-udevd,2139 --守護程序
| `-udevd,2142 --守護程序
向上 -upstart-udev-br, 2066 --daemon

…還有那些 ruby​​ 程序,26911 和 26919,而不是 Nginx 或Passenger 的子程序。

我已經殺死了這些程序,但它們會重新啟動。

我怎樣才能弄清楚這些流程在做什麼,要麼敦促它們完成,要麼讓它們離開並遠離?

top中,您可以通過按“c”鍵來切換完整命令的顯示。

如果您不在top,您還可以使用一些ps選項獲得完整的命令:

ps -fp 26911

因此,“f”表示完整命令,“p”表示您感興趣的程序 ID。

您還可以查看 Linux 上的 proc 文件系統。 cat /proc/26911/cmdline將顯示用於程序 26911 的命令行。

引用自:https://serverfault.com/questions/371548