Linux

我的 linux 伺服器“創建的程序數”和“上下文切換”增長得非常快

  • December 8, 2012

我的伺服器有一個奇怪的行為:-/。是 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 )。

我已更改為/procdir 並完成cat [PID]\status了與ls(包括核心)列出的所有 PID,並且在任何程序中voluntary_ctxt_switches也沒有nonvoluntary_ctxt_switches以相同的速度增長cat /proc/stat(僅幾十/秒),Threads也保持不變。

我也完成strace -p PID了所有程序,因此我可以查看是否有任何程序正在創建執行緒或其他東西,但唯一有一點移動的程序sshread/write操作,因為數據正在發送到我的終端。

在那之後,我已經完成vmstat -s並看到它forks以同樣的速度processes增長/proc/stat。正如http://linux.die.net/man/2/fork所說,每個人都會fork()創建一個新的 PID,但我的伺服器 PID 沒有增長!

我能想到的最後一件事是,所有的過程數據proc/statvmstat -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時間,不錯的級別等

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