使用mpm_prefork模块设置256 GB RAM的Apache MaxClient

时间:2017-02-19 15:51:42

标签: php apache multiprocessing

我想用mpm_prefork模块为Apache服务器增加MaxClient。我只在256 GB RAM的专用服务器上运行webserver。我没有在服务器上运行任何其他程序。

我在使用PHP开发的服务器中运行HTTP webservice API,将在一秒钟内调用1000次

我正在运行CentOS 7

服务器规格
英特尔®至强®E5-1650v3 Hexa-Core Haswell,
RAM 256 GB DDR4 ECC RAM,
硬盘2 x 480 GB SSD(软件RAID 1),
连接1 Gbit / s

1)我可以为MaxClient使用的最大值是多少?我可以使用1000吗?

2)我正在运行服务器版本:Apache / 2.4.6(CentOS)。我找不到任何文件来更改MaxClient。我在哪里可以更改它? /etc/httpd/conf/httpd.conf文件没有MaxClient设置。另外/etc/httpd/conf.modules.d/00-mpm.conf文件也没有MaxClient设置

我是Apache服务器的新手。请帮我做。我试了两天但没找到任何解决方案

由于

1 个答案:

答案 0 :(得分:2)

它没有包含在CentOS 7附带的默认配置中。在LoadModule指令之前在httpd.conf的顶部附近添加这样的块(这是我用于规格较低的服务器):

<IfModule prefork.c>
        StartServers        8
        MinSpareServers     5
        MaxSpareServers    20
        ServerLimit       256
        MaxRequestWorkers 200
        MaxConnectionsPerChild 1000
</IfModule>
在Apache 2.4中,

MaxClients已重命名为MaxRequestWorkers。我保持ServerLimit高一点,因为ServerLimit无法通过重启来更改,但MaxRequestWorkers可以。 ServerLimit设置MaxRequestWorkers的最大值。因此,将ServerLimit放得更高可以让您在紧急情况下增加MaxRequestWorkers的空间,而无需关闭客户。

以上是我在服务器上使用的内容。根据您的规范,我确定MaxRequestWorkers的值为1000就可以了。也许把ServerLimit放在1200。

请参阅documentation for ServerLimit

您还希望增加其他值。 StartServers可能为40,MinSpareServers为25,MaxSpareServers为100。

我喜欢将MaxConnectionsPerChild保持在1000,这样如果有任何内存泄漏,它们不会造成大麻烦。我建议你保持相同的价值。

research all the directives并做出自己的决定。希望以上内容能帮助您入门。

总而言之,我建议您使用:

<IfModule prefork.c>
        StartServers        40
        MinSpareServers     25
        MaxSpareServers    100
        ServerLimit       1200
        MaxRequestWorkers 1000
        MaxConnectionsPerChild 1000
</IfModule>

在服务器资源到位后,请密切关注服务器资源,并且正在使用服务器。您可以使用比这更高的值。

另一个重要问题

我强烈建议您禁用未使用的任何模块的LoadModule指令(只需将其注释掉)。这将显着降低每个服务器进程的内存占用量,并允许您运行更多服务器进程。默认配置中加载了许多您不需要的模块。逐一浏览它们,谷歌了解它们的用途。这将提高资源使用效率。