没有来自 top 命令的有用信息的高 CPU 使用率

aye*_*aye 5 top high-load

在过去的 2 天里,我的服务器开始出现问题,该服务器上有几个用户。服务器是 OpenVZ VPS。通常当我遇到高 CPU 使用率时,我总是使用top命令来找出原因。但是对于这个服务器,我没有从top命令中收到任何有用的信息。以下是我遇到的问题的示例屏幕截图 在此处输入图片说明

从屏幕截图中可以看出,%CPU对于所有进程,该列几乎总是为零,实际上我看到的大部分时间都是零,但 CPU 使用率高达 10 个内核!

我完全迷失了,不知道该怎么做才能找出原因。所以我想问一下是否有人对我面临的可能原因有任何想法?可能是因为服务器问题?

感谢您的任何建议!

编辑:

请注意,此屏幕截图仅在发生高负载时拍摄。它每隔几个小时发生一次,持续约 20 分钟。正常使用只有0.0-0.2核左右。下面是一个正常使用的例子。

在此处输入图片说明

进一步更新

刚才又发生了,这里是建议命令的截图

在此处输入图片说明

很抱歉,我对这些不了解,但如果我理解正确,磁盘使用率没有任何问题,io 使用率非常低。

最后更新

我已经使用使用建议的方法试过vmstatps在答案和注释中给出的,也没有找到有用的信息。当峰值发生时,我什至停止了 apache、mysql 但它没有帮助。我终于联系了VPS提供商并要求更改为另一个节点。他告诉我,他知道节点的问题,最近被恶意客户严重滥用,他正在努力解决这些问题。所以我想我现在不需要做任何事情了。尽管如此,我还是要感谢所有提出建议的成员,让这个问答对以后的参考有用!

iwa*_*rue 9

大约 30% 的 CPU 时间似乎花在了 WAIT 上,并且您的(至少 1 分钟)负载非常高。

所以我会首先检查您的存储和存储使用模式。一个好的起点可能是查看 iostat 和/或监控任何慢速操作(写入和读取)。您还可以在顶部检查每个进程花费的时间,看看是否有任何突出的地方。当您运行 mysql 时,我还会检查它的运行情况。

即使您有合理数量的备用内存,您似乎也在换出,所以我会看看调整vm.swappiness(使用 sysctl)可以为您做什么。RAM 比交换更快,所以如果你可以使用它,我会的。

所有其他的都失败了,看看探测 sysrq 可以为你做什么。

如果更直观的概述可能对您有所帮助,那么如果您没有预先存在的解决方案,我可能会查看 firehol 的 netdata ( https://netdata.firehol.org/ )。

  • 当您获得峰值并查找进程标志时,也可以使用 `ps -ev`,它将帮助您确定哪些进程被标记为等待,哪些进程占用了磁盘等等 (2认同)

Joh*_*ald 6

你没有描述问题是什么。如果存在性能问题,例如应用程序响应不够快,请描述它。

平均负载不是使用的内核数。它与 CPU 上或等待的进程数有关。当平均负载远大于内核数时,这可能表明系统对所有等待的响应速度较慢。

您正在使用基于容器的系统。主机只有一个共享内核,您正在其上运行几个进程。当主机上的其他容器工作时,您会看到负载高峰,但不会反映在您的进程列表中。