Apache HTTP Server 修改最大连接数maxclients - - ITeye博客 https://www.iteye.com/blog/awenhaowenchao-1735968
在公司内网用到了apache2做web服务器,每当内部发文的时候,尤其是一些人事任免及销售目标下发、达成情况总会出现达到最大连接数的情况,导致阻塞。
一般apache采用prefork和worker机制,通过apachectl -l命令查看默认使用的prefork机制。需要修改prefork策略
那么需要做如下修改:
1,/usr/local/apache2/conf/http.conf 引入(include)prefork配置文件/usr/local/apache2/conf/extra/httpd-mpm.conf,
2,修改httpd-mpm.conf配置文件的prefork配置部分
# 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
# MaxClients: maximum number of server processes allowed to start
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
ServerLimit 1000 ##必须放在MaxClients上面 且值>=MaxCliens
MaxClients 1000
MaxRequestsPerChild 10000
</IfModule>
注意:
1,默认情况下prefork配置部分没有ServerLimit配置,其在/usr/loca/apache2/bin/httpd(16进制)中编译,一般会报错如下
MaxClients of 1000 exceeds ServerLimit value of 256 servers,
lowering MaxClients to 256. To increase, please see the ServerLimit directive.
2,修改conf文件后,需要重新启动
3,
prefork采用预派生子进程方式,用单独的子进程来处理 不同的请求,进程之间彼此独立。
相对于prefork,worker全新的支持多线程和多进程混合模型的MPM。由于 使用线程来处理,所以可以处理相对海量的请求,而系统资源的开销要小于基于进程的服务器。但是,worker也使用了多进程,每个进程又生成多个线程,以 获得基于进程服务器的稳定性。(第三点摘自:http://www.itlearner.com/article/4443)