在过去的两天里,我开始有一个服务器上有几个用户的问题。 该服务器是一个OpenVZ VPS。 通常当我经历高CPU使用率时,我总是使用top命令找出原因。 但是对于这个服务器,我没有收到top命令的任何有用信息。 以下是我遇到的问题的示例截图
从屏幕截图可以看出,对于所有进程, %CPU列几乎总是为零,实际上大部分时间我都看到所有的值都是零,但是CPU使用率却达到了10个核心!
我完全迷失了,不知道该怎么做才能找出原因。 所以我想问问有没有人知道我所面对的可能的原因? 这可能是由于服务器问题?
感谢您的任何build议!
编辑:
请注意,此截图仅在发生高负载时才会执行。 它每隔几个小时发生一次,持续约20分钟。 正常使用率只有约0.0-0.2核心。 以下是一个正常使用的例子。
进一步更新
刚刚再次发生,这是所build议的命令的屏幕截图
对不起,我是一个小白菜,但如果我理解正确,磁盘使用没有任何问题,io使用率非常低。
最后更新
我已经尝试使用build议的方法使用vmstat , ps给出的答案和评论,但找不到有用的信息。 当秒杀发生时,我甚至停止Apache,MySQL,但它没有帮助。 我终于联系了VPS提供商,并要求更换为另一个节点。 他告诉我,他知道最近恶意客户严重滥用节点的问题,他正在努力解决这个问题。 所以我想我现在不需要做任何事情。 不过,我要感谢所有提出build议的成员,使得这个问答很有用,供将来参考!
大约30%的CPU时间似乎花在WAIT上,而你的(至less1分钟)负载非常高。
所以我会从检查你的存储和存储使用模式开始。 一个好的起点可能是看看iostat和/或监视任何慢操作(写入和读取)。 你也可以检查在每个进程上花费的时间,看是否有什么突出的东西。 当你运行mysql时,我也会检查它是如何工作的。
即使你有一个合理的备用内存,你也似乎要交换掉,所以我会看到什么调整vm.swappiness (使用sysctl)可以为你做。 内存比交换快,所以如果你可以使用它,我会的。
所有其他的失败,看看什么样的探测sysrq可以为你做。
如果更直观的概述可能会帮助你,那么如果你没有预先存在的解决scheme,我可能会看firehol的netdata( https://netdata.firehol.org/ )。
你没有描述问题是什么。 如果出现性能问题,例如应用程序不够响应,请描述它。
平均负载不是正在使用的核心数量。 它与CPU或等待中的进程数有关。 当平均负载比核心数量大得多时,可以表明系统对所有等待的响应不太敏感。
您正在使用基于容器的系统。 只有一个共享内核的主机,你正在运行几个进程。 当主机上的其他容器发挥作用时,您将看到负载峰值,但不会反映在进程列表中。
你应该安装atop 。 这是更多的信息。
您的CPU被input/输出操作使用。 华盛顿 – 正在等待,这是更多的30%。 我看到更有用的过程是mysqld 。 它吃的时间比别人多。
我build议你增加内存缓冲区并更改其他MySQL参数以减less磁盘操作。 您可以在安装后的十个MySQL性能调整设置中阅读它
如果你使用虚拟机,也许其他虚拟机或主机系统使用磁盘非常困难。 也有可能你的磁盘有坏扇区。 通过主机服务器上的smartctl -a命令读取SMART属性进行检查。