我有几台服务器,运行 Server 2003 Std/Ent 和 SQL 2000/2005,我注意到随着时间的推移,它们将开始显示更高的 CPU 使用率。停止 WMI 服务并重新启动它总是会使其重新关闭。这不是一个巨大的蠕变,但一个月后它会增加大约 10%,所以即使在空闲时间,它也会显示 10% 的 CPU 使用率。我们并没有大量使用 WMI,只有几个脚本检查服务状态和性能(它是否使用 WMI?),这就是它被注意到的方式。是否有 WMI 跟踪工具?有没有其他方法可以解决这个问题?表现出症状的服务器大不相同,除了操作系统和 SQL 之外没有共同的元素。
我需要监视给定进程及其每个线程的 CPU 使用率。
对于他们每个人,我想要:
我发现了一些对 sysstat/sar、collectd、munin、naggios 的引用,但我不确定它们是否具有我需要的功能。
系统是 Ubuntu Hardy。
我最近在我的网络服务器上遇到了一个奇怪的问题。在过去一天左右的时间里,该站点似乎以随机的间隔变慢了一些,我们似乎没有遇到任何重大的额外流量,但是快速查看“顶部”和 httpd 似乎在 3-10 之间跳跃% 到 99% 左右,然后短暂地达到 80 年代中期左右,然后又回落。例如:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2443 apache 25 0 256m 20m 5472 R 88.2 2.1 3:22.29 httpd
Run Code Online (Sandbox Code Playgroud)
这似乎每 30 分钟左右发生一次。奇怪的是,同时发生这种情况我可以运行 Apache 服务器状态页面并会得到(例如):
CPU Usage: u700.5 s6.22 cu0 cs0 - 20.2% CPU load
Run Code Online (Sandbox Code Playgroud)
所以我的问题有两个方面:
我有一个 Server 2008 R2 终端服务器,它在过去三个月里一直闲置着,使用率非常非常低(可能一个用户一个小时,一天一次)。
突然间,莫名其妙地mscorsvw.exe (.NET Runtime Optimisation Service)开始消耗一个处理器的 100%,导致各种警报和触发器响起。这是一种重复的模式,因此可以很容易地判断接下来何时会发生:

有谁知道这可能导致什么?我已经完成了显而易见的事情(重新启动了服务器),但除此之外,我还是 SOL。
我能想到的唯一可能相关的是我今天早上通过 WSUS 批准了六个 Windows 更新,但它们要到明天凌晨 2 点才会安装(其中一些与 .NET 4 安全性有关)。
没有人登录到服务器(除了我),即使他们登录了,我们也没有在那里使用任何 .NET 应用程序。
我们有一个带有小型 (15G) EBS 驱动器的 m1.medium EC2 实例,运行 Rails 3 和 PostgreSQL 服务器。我们注意到 CPU 在奇怪的时间出现峰值,并最终意识到即使是简单、持续的 EBS 访问似乎也会固定 CPU。例如,仅 grep 大约 3G 的日志会导致 100% 的 CPU 使用率 - 这意味着两个内核,这对于 grep 来说应该是不可能的!删除一堆日志文件也占用了大约 25% 的 CPU,这超出了我的预期。我们不换。
这是正常的吗?谷歌很难做到这一点,因为“高 CPU”也是一种 EC2 实例的名称。我很乐意提供更多细节和基准,但首先我想检查这是否是一回事。
我有一个负载很小的 CentOS-5 服务器。“sar”命令的典型输出如下所示:
02:20:01 PM CPU %user %nice %system %iowait %steal %idle
02:30:01 PM all 0.63 0.00 1.23 0.31 0.00 97.84
02:40:01 PM all 0.92 0.32 1.34 0.45 0.00 96.97
02:50:01 PM all 0.76 0.00 0.93 0.77 0.00 97.54
03:00:01 PM all 0.41 0.00 0.72 0.15 0.00 98.72
03:10:01 PM all 0.78 0.32 1.49 1.83 0.00 95.58
03:20:01 PM all 0.27 0.00 0.50 0.62 0.00 98.61
Run Code Online (Sandbox Code Playgroud)
但是,我观察到每天晚上 4 点 10 分,CPU 使用率非常高。除了一个月中的几天外,这种情况几乎每天晚上都会发生。“sar”命令显示如下:
03:00:01 AM all 0.10 0.00 0.10 0.11 0.00 …Run Code Online (Sandbox Code Playgroud) 目前我在运行 Magento 的服务器上遇到了问题,它慢得令人难以置信。
这是一个 VPS,上面有一些 Magento 安装用于开发,所以我是唯一一个使用它们的人。当我在 2 秒后执行 4 个请求时,我在 10 秒内完成。缓慢,但仍在我的耐心范围内。但是,当我执行 4 个“并发”请求时(非常快地连续打开 4 个选项卡),所有四个核心都会达到 100% 并在那里停留一分钟。
这怎么可能?
我知道这里有很多可能性,因此也欢迎任何有关如何使 Apache/PHP 服务器运行得更快的提示。
以前它运行得更快,我也试过 APC,但它一直导致问题(PHP 错误,内存池问题),所以我禁用了它。
顺便说一句,Magento 缓存已关闭,编译也已关闭。我知道这会使 Magento 比平时慢,但我认为任何 Magento 安装的 60 秒响应时间都不正常。
虚拟硬件:
4 核和 4096MB RAM
Swap 从未使用(使用 htop 检查)100GB 磁盘空间,其中 10% 正在使用
软件:
Debian 6 DirectAdmin 和 apache custombuild PHP 5.2.17 (CLI)
如果您需要更多信息,请告诉我如何获取,因为我可能不知道如何获取。我知道如何在 linux 中使用命令行以及很多命令的使用,但是我管理服务器的经验有限。
tl; dr:第一个 CPU 内核始终处于饱和状态,所有其他内核始终负载不足。
一个虚拟机,在基于 Ubuntu 的 Xen XCP 中:
$ uname -a Linux MYHOST 2.6.38-15-virtual #59-Ubuntu SMP Fri Apr 27 16:40:18 UTC 2012 i686 i686 i386 GNU/Linux $ lsb_release -a 没有可用的 LSB 模块。 分销商 ID: Ubuntu 描述:Ubuntu 11.04 发布:11.04 代号:natty
此 VM 有 8 个 CPU 内核。
这个虚拟机上运行着 10 个单线程工作进程,它们通过 FCGI 接口连接到 nginx 服务器(在本地网络端口上侦听)。
在来自 AB 的合成负载下,只有 8 个内核中的第一个内核会加载到 100%(如从 中看到的htop)。它或多或少地始终处于非常高的负载下,所有其他内核的负载从 0% 到 100% 不等,或多或少是随机的(并且这些内核的 CPU 负载在跳动)。
这是我在负载下通常看到的内容htop:
1 [|||||||||||||||||||||||||||||||||||||||||||| …
我们正在使用 Express 3 运行 Node Socket.io 服务器。服务器使用Forever进行监控。服务运行良好,但 CPU 一整天都在增长,直到达到 90% 以上,然后突然回落到约 20%,如下图所示。我相信下降是由 Forever 重新启动应用程序引起的。

我想知道的是;
我认为这可能与 Socket.io 在用户断开连接后不清理资源有关,尽管文档说 Socket.io 会自动管理它。
任何帮助将不胜感激,这个问题使管理我们的服务器变得非常困难。请让我知道这个问题是否更适合 StackOverflow。
更新:经过更多研究,似乎 CPU 与连接数没有直接关系。我们的临界质量似乎是大约 1500 个并发连接,如下所示:
有时我们可以在只有 500 个连接的情况下 100% CPU,其他时候它的 1500 个连接。我知道发送消息的速率有很大的影响,但是速率是相当一致的。
cpu-usage ×10
linux ×2
amazon-ebs ×1
amazon-ec2 ×1
apache-2.2 ×1
centos ×1
debugging ×1
high-load ×1
magento ×1
memory-leak ×1
monitoring ×1
node.js ×1
sar ×1
socket ×1
sql-server ×1
ubuntu ×1
vmware-esxi ×1
windows-7 ×1
wmi ×1