我已将默认配置更改为:
<IfModule worker.c>
ServerLimit 20
StartServers 4
MaxRequestWorkers 600
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 30
MaxConnectionsPerChild 0
</IfModule>
当达到峰值时,使用服务器状态,当它达到400个会话时,它似乎仍然没有创建新的工作者并保持在400:
BusyWorkers: 400
IdleWorkers: 0
Scoreboard: KKKKCKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKRKCKKKKKKCKKRKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKRKKKKKCKKKCKKKKKRKKKCKKKKKKCKKKKKKKKKKKKRCKKCKKKCKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKCKKKRKKKKKKKRKKKKKKKKKKKKKCKCKKKKKCKKKCKCKKRCRKKKKKKKKKKKKRKKKKKKKKKKKKKKCKKKKCKKKKKRKCCKKKKKKKKKKKKKKCKKKKKKKRKKKKKKKKKKCKKKCKKRKKCRKKRKKKKKKKKKKKKKCKKKKRKKKKRKKKKCKKKKKRKKKKKKKKKKKKKKKKKKKKRKKKKKKKWKKKKKKKKKKKCKKKK
如果我将用户更改为apache并发出ulimit -u,我会得到1024
有什么想法吗?
答案 0 :(得分:0)
您需要完全停止/启动以使mpm更改生效,重启或优雅仍会为您提供先前的设置。
答案 1 :(得分:0)
我终于弄清楚为什么Apache无法创建400多名工作人员。这是因为配置文件格式。 在我们的httpd.conf文件中,worker和prefork模块的设置就在“LoadModule”部分之前编写。似乎apache不喜欢这种格式,因此忽略了工作模式的值并回退到默认值。 修复非常简单,我们必须从“LoadModules”部分上面删除worker和prefork模块的设置,并将它们放在此部分之后。
这些值最适合1000个并发连接:
# prefork MPM
# StartServers: number of server processes to start
# MinSpareServers: minimum number of server processes which are kept spare
# MaxSpareServers: maximum number of server processes which are kept spare
# ServerLimit: maximum value for MaxClients for the lifetime of the server
# MaxClients: maximum number of server processes allowed to start
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule prefork.c>
ServerLimit 40
StartServers 5
MinSpareThreads 25
MaxSpareServers 75
MaxRequestWorkers 1000
ThreadsPerChild 25
MaxConnectionsPerChild 0
</IfModule>
#
# worker MPM
# StartServers: initial number of -erver processes to start
# MaxClients: maximum number of simultaneous client connections
# MinSpareThreads: minimum number of worker threads which are kept spare
# MaxSpareThreads: maximum number of worker threads which are kept spare
# ThreadsPerChild: constant number of worker threads in each server process
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule mpm_worker_module>
ServerLimit 40
StartServers 5
MinSpareThreads 25
MaxSpareThreads 75
MaxRequestWorkers 1000
ThreadsPerChild 25
MaxConnectionsPerChild 0
</IfModule>
之后只需停止/启动apache进程。