我有两个运行 Debian 5 稳定版的 Dell R410 Web 服务器(2 个四核 Xeon E5520 w/ 8gb ram)。他们的修补程序已经被忽视了一段时间,所以最近我们进行了一次修补程序以更新所有内容 - 它运行的应用程序的新版本需要 PHP 5.3.6。内核没有更新,因为它来自 Debian backports 存储库(安装的版本是 2.6.30-bpo.1-amd64)。
自打补丁以来,用户抱怨网站速度缓慢。大多数请求是立即提供的,但它会一次又一次地“卡住”请求。卡住的请求中似乎没有任何可辨别的模式。
这些服务器位于负载平衡器之后,它们同时更新,并且在运行修补程序时都开始出现此问题。他们当时没有重新启动,但从那以后就没有任何效果。
我在服务器上设置了一个脚本来循环time curl localhost:80/alive,其中有一个简单的 index.html 文件,其中只包含“OK”。奇怪的是,这些请求仍然以与实际 php 内容请求相同的频率和持续时间延迟。常见的时间有3秒、9秒、25秒、45秒,有的超过3分钟。45 秒是常见的响应时间,但当然浏览器早在此之前就放弃了,因此实际上没有响应。
apache worker 配置如下:
<IfModule mpm_prefork_module>
StartServers 50
MinSpareServers 10
MaxSpareServers 150
ServerLimit 500
MaxClients 500
MaxRequestsPerChild 5000
</IfModule>
Run Code Online (Sandbox Code Playgroud)
对于具有 8GB 内存的服务器来说,这对我来说似乎是明智的。在实践中,worker 数量很少超过 170,所以我们没有达到这个限制并且有足够的空闲内存。平均负载低,徘徊在 0.5-1.5 左右
内核是一个旧的 backport,所以我尝试将它更新到 lenny 的最新 backport (2.6.32-bpo.5-amd64),但它在启动时出现恐慌,我不得不让我们的主机用旧的重新启动它,所以在我们尝试更新他们的 bioses 并使用 Debian 6 格式化它们之前,我想探索其他选项。
Apache 似乎是罪魁祸首,所以下一步是更新到最新的 apache 向后移植,但该版本从 2.2.9-10+lenny4 到 2.2.9-10+lenny9 是一个相当小的颠簸,所以我没有t 预计会有任何重大变化。
PHP …
在我们的 Linux 服务器上,我们不时会收到众所周知的 SYN 洪水消息:
possible SYN flooding on port 80
Run Code Online (Sandbox Code Playgroud)
这可能不是攻击,因为网站流量很大。
然而,从某个时候开始,这些消息开始每隔约 60 秒出现一次。我的意思是:
Aug 16 01:22:44 amadeus kernel: possible SYN flooding on port 80. Sending cookies.
Aug 16 01:23:45 amadeus kernel: possible SYN flooding on port 80. Sending cookies.
Aug 16 01:25:05 amadeus kernel: possible SYN flooding on port 80. Sending cookies.
Aug 16 01:26:06 amadeus kernel: possible SYN flooding on port 80. Sending cookies.
Aug 16 01:27:13 amadeus kernel: possible SYN flooding on port 80. Sending cookies. …Run Code Online (Sandbox Code Playgroud)