我们遇到了一个奇怪的行为,我们看到 CPU 利用率很高,但平均负载很低。
我们监控系统的以下图表可以最好地说明这种行为。

在大约 11:57,CPU 利用率从 25% 上升到 75%。平均负载没有显着变化。
我们运行的服务器有 12 个内核,每个内核有 2 个超线程。操作系统将其视为 24 个 CPU。
CPU 利用率数据是通过/usr/bin/mpstat 60 1每分钟运行一次来收集的。all行和%usr列的数据显示在上面的图表中。我确信这确实显示了每个 CPU 数据的平均值,而不是“堆叠”利用率。虽然我们在图表中看到 75% 的利用率,但我们看到一个进程显示在top.
平均负载数字取自/proc/loadavg每分钟。
uname -a 给出:
Linux ab04 2.6.32-279.el6.x86_64 #1 SMP Wed Jun 13 18:24:36 EDT 2012 x86_64 x86_64 x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)
Linux 发行版是 Red Hat Enterprise Linux Server release 6.3 (Santiago)
我们在机器上以相当高的负载运行几个 Java Web 应用程序,每台机器每秒 100 个请求。
如果我正确解释了 CPU 利用率数据,当我们有 75% 的 CPU 利用率时,这意味着我们的 …
将我们的计算机从 RHEL 6.6 升级到 RHEL 6.7 后,我们发现一个问题:30 台计算机中有 4 台仅在其两个从属接口之一上接收多播流量。目前尚不清楚升级是否相关,或者包含的重新启动是否触发了该行为 - 重新启动的情况很少见。
我们预计会在 4 个不同的端口上收到大量发往组 239.0.10.200 的多播数据包。如果我们检查ethtool其中一台有问题的机器上的统计信息,我们会看到以下输出:
健康的界面:
# ethtool -S eth0 |grep mcast
[0]: rx_mcast_packets: 294
[0]: tx_mcast_packets: 0
[1]: rx_mcast_packets: 68
[1]: tx_mcast_packets: 0
[2]: rx_mcast_packets: 2612869
[2]: tx_mcast_packets: 305
[3]: rx_mcast_packets: 0
[3]: tx_mcast_packets: 0
[4]: rx_mcast_packets: 2585571
[4]: tx_mcast_packets: 0
[5]: rx_mcast_packets: 2571341
[5]: tx_mcast_packets: 0
[6]: rx_mcast_packets: 0
[6]: tx_mcast_packets: 8
[7]: rx_mcast_packets: 9
[7]: tx_mcast_packets: 0
rx_mcast_packets: 7770152
tx_mcast_packets: 313
Run Code Online (Sandbox Code Playgroud)
损坏的接口:
# …Run Code Online (Sandbox Code Playgroud) 我们在 Windows 7 计算机上的 VirtualBox 中运行 CentOS 版本 6.3 时遇到问题。症状如下:
几个小时甚至几天内一切正常。然后发生了一些破坏系统的事情。
发生这种情况后我们还能做什么:
什么不起作用:
当发生这种情况时,我们在服务器上看到的内容如下:
在 /var/log/messages 中我们得到以下内容:
Jun 14 01:10:48 devvm kernel: e1000 0000:00:03.0: eth0: Detected Tx Unit Hang
Jun 14 01:10:48 devvm kernel: Tx Queue <0>
Jun 14 01:10:48 devvm kernel: TDH <2e>
Jun 14 01:10:48 …Run Code Online (Sandbox Code Playgroud) linux ×3
bonding ×1
cpu-usage ×1
kernel ×1
load-average ×1
multicast ×1
networking ×1
virtualbox ×1