Apache2 - 适用于极高流量网站的ServerLimit,MaxClients,MaxRequestsPerChild的最佳值

时间:2012-11-19 20:09:19

标签: performance optimization apache2

我正在经营一个交通密集的网站(每天100k)。在高峰时间(1500+在线活动)网站的速度显着减慢,页面加载时间也会增加。 (图像也是)

我们在同一台服务器上使用前端+ mysql数据库。有足够的未使用资源。

平均负载:1.47,1.63,1.73 htop:http://grabilla.com/02b13-02a8961d-bd7e-404c-9873-06e57bb7eab1.png

服务器配置: E3 1230(4 x 3.2Ghz)/ 16GB RAM / 1Gbps端口速度 centoOS 5.8

Apache配置:

Timeout 150
KeepAlive Off
MaxKeepAliveRequests 1000
KeepAliveTimeout 15

<IfModule prefork.c>
StartServers       8
MinSpareServers    5
MaxSpareServers   20
ServerLimit      256
MaxClients       256
MaxRequestsPerChild  4000
</IfModule>

<IfModule worker.c>
StartServers         2
MaxClients         450
MinSpareThreads     25
MaxSpareThreads     75 
ThreadsPerChild     25
MaxRequestsPerChild  0
</IfModule>

高峰时段的CPU使用率绝不会超过2平均负载。 MySQL服务器当时的使用率也为7~15%。我知道这不是数据库瓶颈,因为静态页面在高峰时段也需要很长时间才能加载。

非常感谢优化这些价值观的任何提示,谢谢。

网址网址:http://goo.gl/XVPAA

1 个答案:

答案 0 :(得分:10)

假设您使用带有prefork的linux:打开保持活动状态。如果您的流量不断增加,服务器数量会增加。降低你保持活着的时间,这样你就不会快速饱和你的连接并增加你对每个孩子的请求,所以服务器不会经常重启。你有很多RAM,所以尽量最大化你的RAM使用并减少你的CPU使用率。首先尝试这个:

Timeout 150
KeepAlive On
MaxKeepAliveRequests 1000
KeepAliveTimeout 5

<IfModule prefork.c>
StartServers      20
MinSpareServers   20
MaxSpareServers   30
ServerLimit      256
MaxClients       256
MaxRequestsPerChild  10000
</IfModule>

还要编辑my.conf并增加缓存和缓冲区。