ServerLimit,MaxClients,MaxRequestsPerChild指令的最佳值

Modified on: Mon, 11 Nov 2019 03:00:01 +0800

我正在为交通密集的网站运行大量动态内容,主要是用户生成的。

服务器是专用服务器,共有4个Intel(R)Xeon(R)CPU X3210 @ 2.13GHz采集器。我需要知道ServerLimit和MaxClients apache的指令的最佳值,考虑到服务器有4GB的RAM而MySQL数据库在单独的服务器上运行。该面板是带有CentOS的DirectAdmin。

以下是我当前的指令,但在高峰时段有超过5k的用户,注意到一个重要的滞后 - 这不是整个MySQL的错,因为页面似乎生成得很快(我实现了页面生成时间计数器),但是是一个很长的连接延迟,直到页面开始响应并发送到浏览器。

<IfModule prefork.c>
    StartServers     800
    MinSpareServers   20
    MaxSpareServers   60
    ServerLimit      900
    MaxClients       900
    MaxRequestsPerChild  2000
</IfModule>
Timeout 90
KeepAlive On
KeepAliveTimeout 5

我应该提到使用top命令监控服务器,CPU使用率在高峰时段永远不会超过20%~30%。当时MySQL服务器的使用率也在30%~50%之间,而且我一直在努力修复慢速查询,但这是一个不同的问题。我知道这不是数据库瓶颈,因为静态页面在高峰时段也需要很长时间才能加载。

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

最佳答案

你的MaxClients方式太高了。您的apache进程的当前大小是多少?乘以x 900.是否大于4GB?如果是这样,机器很可能会进行交换。我通常从框中的MaxClients = 2x vCPU开始(grep -c processor / proc / cpuinfo)。在这种情况下约为8.然后确保MaxClients x apache进程大小不超过4GB。

您可以从那里升级MaxClients,具体取决于您的客户端的连接类型。 (拨号用户需要使用勺子等)但请确保您永远不会陷入交换状态。

然后将Min,Max和Start服务器设置为MaxClients。在专用服务器环境中没有必要让它们有所不同。

然后用ab做一些测试(如鹅笔记。)


相关问答

添加新评论