我的 linux 伺服器“創建的程序數”和“上下文切換”增長得非常快
我的伺服器有一個奇怪的行為:-/。是 OpenVZ VPS(我認為是 OpenVZ,因為
/proc/user_beancounters
存在並df -h
返回 /dev/simfs 驅動器。也ifconfig
返回venet0
)。當我這樣做時cat /proc/stat
,我可以看到每秒如何創建大約 50-100 個程序並發生大約 800k-1200k 上下文切換!所有這些資訊都與伺服器完全空閒,沒有流量或程序執行。頂部顯示 0 平均負載和 100% 空閒 CPU。
我已經關閉了所有不需要的服務(httpd、mysqld、sendmail、nagios、named…),但問題仍然存在。我也是
ps -ALf
每秒都做,看不到任何變化,ps
每次只創建一個新程序,PID和之前一樣+1,所以沒有創建新程序,所以我認為程序增長cat /proc/stat
必須是執行緒(是的,似乎也計算執行緒創建processes
,/proc/stat
因為這表明:http ://webcache.googleusercontent.com/search?q=cache:8NLgzKEzHQQJ:www.linuxhowtos.org/System/procstat.htm&hl=es&tbo=d&gl=es&strip =1 )。我已更改為
/proc
dir 並完成cat [PID]\status
了與ls
(包括核心)列出的所有 PID,並且在任何程序中voluntary_ctxt_switches
也沒有nonvoluntary_ctxt_switches
以相同的速度增長cat /proc/stat
(僅幾十/秒),Threads
也保持不變。我也完成
strace -p PID
了所有程序,因此我可以查看是否有任何程序正在創建執行緒或其他東西,但唯一有一點移動的程序ssh
是read
/write
操作,因為數據正在發送到我的終端。在那之後,我已經完成
vmstat -s
並看到它forks
以同樣的速度processes
增長/proc/stat
。正如http://linux.die.net/man/2/fork所說,每個人都會fork()
創建一個新的 PID,但我的伺服器 PID 沒有增長!我能想到的最後一件事是,所有的過程數據
proc/stat
和vmstat -s
顯示都與儲存在同一台機器上的所有其他 VPS 共享,但我不知道這是否正確……如果有人能對此有所了解,我將不勝感激。
在您的情況下,我假設您的核心沒有虛擬化 /proc/stat 中的部分或全部值,因此您看到的應該是由其他容器或硬體節點本身的活動引起的。
您沒有提到您的特定核心版本,因此我們無法確定,但在http://forum.openvz.org/index.php?t=msg&goto=44507&中討論了類似的問題。
PS:改為查看 /proc/vz/vestat 。
我在這里至少看到過一個類似的問題,關於有人在負載均衡器後面有 2 個相同的 ubuntu 伺服器……我會告訴你我告訴他的內容:
syspro(“系統分析器”)
或嘗試在 /etc/security/limits.conf 中填充一些限制 將限制應用於兩台機器並比較顯示哪些執行檔。它至少會標記一個程序或執行緒並縮小嫌疑人名單。
man limits.conf:文件描述符的硬和軟,記憶體鎖定,堆棧大小,cpu時間,不錯的級別等