在 Centos 5.7 上安装和配置 WHM/cPanel 后,似乎当我尝试访问 WHM、cPanel 或服务器上的 3 个网站之一时,一切都会冻结(WHM、cPanel 和所有网站),并且我注意到系统 CPU 飙升至 80% 以上(而用户 CPU 保持相当低)。这种情况并不总是发生 - 有时一切都正常(这不是 PHP 问题)。
两个问题:
1) 服务器有 2 个处理器,据我所知,这意味着 CPU 使用率可以高达 200%。如何确保系统正在使用两个处理器?
2) 如何查看系统进程?似乎没有任何地方提到它们,但它们却毫无理由地占用了所有 CPU。
====
评论中要求的内容:
顶部(问题发生时): http://ynhockey.net/personal/cpanel_linux_top2.png
正常运行时间:
13:38:13 启动 11 天,20:03,1 个用户,平均负载:0.15、0.07、0.05
自由的:
已使用的、可用的、缓存的共享缓冲区总数 内存:2058752 1718608 340144 0 280996 852044 -/+ 缓冲区/缓存:585568 1473184 交换:522104 183784 338320
答案1
1:充分利用可用的核心
CPU(s)
据我所知,输出顶部的计数已top
针对核心数进行了标准化,因此 100% 表示正在使用的所有可用 CPU 资源。%CPU
但该列未进行标准化,因此可能超过 100%。
top
顶部验证这一点(它可能因系统版本而异,每个核心打开一个会话并gzip -c < /dev/zero > /dev/null
在其中运行,同时top
在另一个会话中观察。CPU 数字总计应为~100%而不是 100 *核心(它们在top
系统上确实如此,我刚刚尝试过确认)。
一个可能影响上述测试的复杂因素是超线程(如果您的 CPU 中有超线程并且已启用)。top
会将所有虚拟核心视为真实核心(因此,对于一个具有超线程的双核 CPU,top
当您按 打开每个核心的显示时,您将看到四个核心1
),但超线程并不能带来 100% 的处理资源提升(请参阅http://en.wikipedia.org/wiki/Hyper-threading在我的上网本上使用相同的测试(2 个内核,开启超线程,因此有 4 个虚拟内核)显示了类似的结果:两个单线程 CPU 消耗任务使top
处理器使用率显示为 ~50%,四个这样的进程使处理器使用率显示为 ~100%(尽管总处理量为不是由于 HT 在每个核心的 vcore 之间共享 CPU 资源的方式,因此速度提高了一倍。
2:进程列表
%sys 不计算单独的系统进程。任何进程可以在“用户空间”中花费一些时间(进行计算、处理字符串等),这计入 %user,在“内核空间”中花费一些时间(当它要求内核分配一些内存等时),这计入 %sys。
你应该看到全部top
输出中当前存在的进程,但top
如果进程在 的轮询间隔内创建并结束,则它们将“逃避”被计入s 列表top
(但 top 仍可以看到使用的总时间,因为它使用内核范围的计数来计算这些数字)。
使用现代设备,您可以在 top 重新扫描当前进程列表并显示它之间的空闲时间内(默认情况下通常为一秒钟)创建许多进程,执行一些工作并结束。
您可能会在日志文件中找到证据来确认这种情况是否发生,但不幸的是,这也可能是没有留下日志足迹的过程。