Apache 连接

Apache 连接

我有一台 2.8 Ghz 的 i5 服务器,16GB Ram,无交换,它连接到 100Mbps 端口 + Debian 6 Stable

我正在运行一个小型 LAMP 站点,服务器几乎处于空闲状态...它使用了 1400MB 的 RAM 和接近 4% 的 CPU。

我从另一台 100Mbps 的服务器上进行了一个小的基准测试

#!/bin/bash
for i in {1..300}
 do
  wget -b -r -l 1 -x www.site.com
 done

我得到了这个:

141 个文件,3.3M(每次下载)

我可以达到高达 97Mbps,没问题(MTRG)。

但问题出在第一台服务器上......当我收到如下信息时:

root@server:~# ss | grep ESTAB | wc -l
300  (or more)

服务器似乎没有响应,但它仍然几乎处于空闲状态...根据 iotop,i/o 也处于空闲状态。

Mysql 设置为允许 1000 个连接,到目前为止没有问题。

Apache 配置

Timeout 300
KeepAlive On

MaxKeepAliveRequests 0

KeepAliveTimeout 15

<IfModule mpm_prefork_module>
    StartServers          5
    MinSpareServers       5
    MaxSpareServers      10
    MaxClients          150
    MaxRequestsPerChild   0
</IfModule>

root@server:~# cat /etc/sysctl.conf
net.core.somaxconn = 10240
....

我尝试过 Apache 和 Sysctl,寻找更好的东西,但没有找到。

任何帮助表示感谢

答案1

关闭 KeepAlive,然后重新运行它。您将保持 apache 连接打开 15 秒,每个连接等待您运行的 wget 的另一个连接。我相信关闭 KeepAlive 后您会得到更好的结果

答案2

您也可以安全地增加MaxClients设置。Apache 子进程通常使用 20MB 到 100MB 之间的空间,具体取决于您加载了哪些模块。除非您处于该范围的上限,否则您可能可以处理 200 或 300 个子进程。

更多的子进程意味着更多的同时请求,即使子进程与保持活动相关。

相关内容