我的Linux服务器“创build进程数”和“上下文切换”正在快速增长

我在我的服务器有一个奇怪的行为: – /。 是一个OpenVZ VPS(我认为是OpenVZ,因为/proc/user_beancounters存在, df -h返回/ dev / simfs驱动器,另外ifconfig返回venet0 )。 当我做cat /proc/stat ,我可以看到每秒如何创build50-100个进程,并发生大约800k-1200k的上下文切换! 所有的信息是与服务器完全空闲,没有stream量,也没有程序运行。

顶部显示0平均负载和100%闲置的CPU。

我closures了所有不需要的服务(httpd,mysqld,sendmail,nagios,命名…),问题依然存在。 我也ps -ALf都做ps -ALf ,但是我没有看到任何改变,每次只创build一个新的ps进程,PID与之前的+ 1一样,所以不会创build新进程,所以我认为这个进程在cat /proc/stat增长必须是线程(是的,似乎/proc/stat中的processes计数线程创build也是这样: http : /proc/stat : www.linuxhowtos .org / System / procstat.htm&hl = es&tbo = d&gl = es&strip = 1 )。

我已经更改为/proc目录,完成cat [PID]\status与所有列出的ls (包括内核的),并在任何进程的nonvoluntary_ctxt_switchesnonvoluntary_ctxt_switches增长速度与cat /proc/stat相同(只是一个几十/秒), Threads保持不变。

我已经对所有进程执行了strace -p PID ,所以我可以看到是否有进程在创build线程或者其他东西,但是有一点移动的唯一进程是ssh并且由于数据正在发送,移动是read / write操作到我的terminal。

在那之后,我做了vmstat -s ,看到forks/proc/stat中的速度相同。 正如http://linux.die.net/man/2/fork所说,每个fork()都会创build一个新的PID,但是我的服务器PID不会增长!

我能想到的最后一件事情是proc/statvmstat -s显示的所有进程数据与存储在同一台机器上的所有其他VPS共享,但我不知道这是否正确…如果有人可以抛出一些光线,我会很感激。

在你的情况下,我会假设你的内核没有在/ proc / stat中虚拟化一些或所有的值,所以你看到的应该是其他容器或硬件节点本身的活动引起的。

你还没有提到你的特定的内核版本,所以我们无法确定,但在http://forum.openvz.org/index.php?t=msg&goto=44507&中也讨论过类似的问题。

PS:改为检出/ proc / vz / vestat。

我在这里看到至less有一个类似的问题,关于一个负载均衡器后面有两个相同的Ubuntu服务器的人…我会告诉你我告诉他:

syspro(“系统分析器”)

或者尝试在/etc/security/limits.conf中填充一些限制对两台机器应用限制,并比较显示哪些可执行文件。 它至less会标记一个进程或线程,并缩小嫌疑犯名单。

man limits.conf:文件描述符的硬性和软性,内存locking,堆栈大小,CPU时间,级别等