由于高系统 CPU 负载 (%sys) 导致的高负载平均值

Nic*_*ick 5 linux linux-networking high-load

我们有高流量网站的服务器。最近我们从

2 x 4 核服务器(/proc/cpuinfo 中的 8 核),32 GB RAM,运行 CentOS 5.x,以

2 x 4 核服务器(/proc/cpuinfo 中有 16 核),32 GB RAM,运行 CentOS 6.3

运行 nginx 作为代理的服务器、mysql 服务器和 sphinx-search。

流量很高,但 mysql 和 sphinx-search 数据库相对较小,通常一切都运行得非常快。

今天服务器的平均负载为 100++。查看 top 和 sar,我们注意到 (%sys) 非常高 - 50% 到 70%。磁盘利用率不到 1%。我们尝试重新启动,但重新启动后问题存在。在任何时候服务器至少有 3-4 GB 的可用内存。

只有 dmesg 显示的消息是“端口 80 上可能发生 SYN 泛洪。正在发送 cookie。”。

这是sar的片段

11:00:01        CPU     %user     %nice   %system   %iowait    %steal     %idle
11:10:01        all     21.60      0.00     66.38      0.03      0.00     11.99
Run Code Online (Sandbox Code Playgroud)

我们知道这是交通问题,但我们不知道将来如何进行以及在哪里检查解决方案。

有没有办法我们可以找到那些“66.38%”的确切使用位置。

任何建议,将不胜感激。


更新:今天平均负载“正常”,“sys%”也正常~4%。然而,今天的流量比昨天减少了大约 20-30%。这让我觉得昨天的问题是因为 TCP 的一些内核设置。

Chr*_*ian 1

我会从 EPEL 存储库安装。Atop 应该可以帮助您显示诊断导致 %sys 活动的原因。

Atop 还具有 atop -r 功能,允许您使用 t/T 键及时向后和向前浏览日志。

还要查看 /proc/interrupts 和 /var/log/httpd/logs 并按 ip 进行排序,以查看是否有任何可疑 IP 导致 httpd 流量异常。

我会将 cat /proc/interrupts 定时到日志文件中。寻找中断中的高增量。