Ubuntu
Rails 伺服器上的神秘 Ruby 程序
我試圖在 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 的命令行。