我想用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服务器的新手。请帮我做。我试了两天但没找到任何解决方案
由于
答案 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
指令(只需将其注释掉)。这将显着降低每个服务器进程的内存占用量,并允许您运行更多服务器进程。默认配置中加载了许多您不需要的模块。逐一浏览它们,谷歌了解它们的用途。这将提高资源使用效率。