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

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

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

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 的可用 RAM。

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

我们知道这是交通问题,但我们不知道将来该如何处理以及去哪里寻找解决方案。

有没有办法我们可以找到“66.38%”的具体用途?

任何建议,将不胜感激。


更新:今天的平均负载“正常”,“系统百分比”也正常~4%。但是今天的流量比昨天少了约 20-30%。这让我认为昨天的问题是由于 TCP 的一些内核设置造成的。

答案1

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

Atop 还具有 atop -r 功能,可让您使用 t/T 键按时间顺序向前和向后浏览日志。

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

我会定期将 cat /proc/interrupts 写入日志文件。查找中断中的高增量。

相关内容