我的服务器有一个奇怪的行为:-/。是一个 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
了列出的所有 PID ls
(包括内核的)并且在任何进程中voluntary_ctxt_switches
也没有nonvoluntary_ctxt_switches
以与它相同的速度增长cat /proc/stat
(仅几十/秒),Threads
也保持相同。
我也strace -p PID
对所有进程进行了处理,因此我可以查看是否有任何进程正在创建线程或其他东西,但唯一有一点移动的进程是ssh
并且移动是read
/write
操作,因为数据正在发送到我的终端。
在那之后,我已经完成vmstat -s
并看到它以与 doesforks
相同的速度增长。正如http://linux.die.net/man/2/fork所说,每个创建一个新的 PID 但我的服务器 PID 没有增长!processes
/proc/stat
fork()
我能想到的最后一件事是,显示的所有过程数据都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 时间、nice 级别等