我的服务器出现了奇怪的行为 :-/。是 OpenVZ VPS(我认为是 OpenVZ,因为/proc/user_beancounters
存在并df -h
返回 /dev/simfs 驱动器。还ifconfig
返回venet0
)。当我这样做时cat /proc/stat
,我可以看到每秒大约有 50-100 个进程被创建,并且发生了大约 800k-1200k 次上下文切换!所有这些信息都是在服务器完全空闲、没有流量也没有程序运行的情况下提供的。
顶部显示平均负载为 0,空闲 CPU 为 100%。
我关闭了所有不需要的服务(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
目录并完成了cat [PID]\status
列出的所有 PID 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 共享,但我不知道这是否正确...如果有人可以对此有所启发,我将不胜感激。
答案1
就您而言,我会假设您的内核没有虚拟化 /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 时间、良好级别等