编辑:这里有更详细的答案:https ://serverfault.com/questions/454192/my-linux-server-number-of-processes-created-and-context-switches-are-growth
我的服务器有一个奇怪的行为:-/。是一个VPS。当我这样做时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
(仅几十/秒)。
我也完成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 共享,但我不知道这是否正确......如果有人能对此有所了解,我将不胜感激。