我的服务器在高峰时段大约每 2 到 5 分钟就会挂起 5 秒钟。高峰时段会持续 6 个小时以上。
服务器规格如下:
Ubuntu Linux: 12.04.1
Kernel and CPU: Linux 3.0.0-17-server on x86_64
Processor info: Intel(R) Xeon(R) CPU E31230 @ 3.20GHz, 8 cores
Ram: 6GB only 1.20GB used at peak
我正在运行带有 PHP-APC 的最新 LAMP 包。服务器位于受保护的代理后面。运行时,netstat -anp | grep 'tcp\|udp' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
我得到了18099
对于网站性质而言正常的信息。它们都是从 1 个 IP 访问服务器的合法连接。
我已经调整了 apache.conf prefork_module,并且多次更改了它,但没有解决挂起问题。
我观察了整个过程,看是否有峰值,但都没有。峰值时的磁盘 IO 为67% idle
。我有足够的可用 RAM,而且它从不交换。服务器本身运行良好,然后它表现得像想要休息 5 秒钟,当它返回时,它可以很好地处理 5 秒钟内错过的内容。
apache error.log 中没有任何内容可以提示任何内容。
我感觉有些东西受到了限制,但我说不上来是什么。我想说这跟我的连接数量有关,好像它达到了某种连接限制。我想知道你们是否知道这可能是什么,或者我可以运行看看是什么。
更新
直接通过 IP 而不是域名访问服务器时,服务器响应良好。因此,当我同时测试时,当它挂起 5 秒钟时,域名没有响应,但 IP 会响应良好,所以这让我认为这是服务器操作系统在做这件事
我确实看到了[apache2] <defunct>
其中的一两个,不确定这是否足以导致挂起,但它只在手动操作时显示,并且 apache 没有在错误日志中给我任何关于它的信息。
更新日期:2013 年 1 月 20 日
我的数据中心将构建一个新服务器并让我进行切换。我在同一机架上还有另外两台相同的服务器,相同的设置,相同的流量,这是唯一给我带来问题的服务器。
答案1
这听起来像是驱动器故障。为您的驱动器获取一份智能报告,并更换任何具有大量重定位扇区或其他错误的驱动器。
答案2
大约 5 年前,我遇到过类似的问题。整个机器会严重滞后 5 秒钟(当时你什么也做不了)。后来发现主板出了问题,而且保修仍然有效,所以我没有进一步调查。无论如何,如果问题不是出在驱动器上,你可能需要检查一下。
答案3
一种可能性是名称服务器问题(Apache 等可能会出于日志记录目的进行 DNS 查找,但会默默失败)
检查 DNS 服务器是否配置正确,以及服务器是否能够进行 DNS 查找。
如果 DNS 服务器不可用,请检查 apache2 配置是否使用 DNS 查找。