共计 2167 个字符,预计需要花费 6 分钟才能阅读完成。
网站禁止图片盗链,此文适用于 Ubuntu Linux 系统。首先需要确定服务器 httpd 的工作模式呢,可通过执行 apachect2 -l 来查看:
可以看到有 prefork.c,因此 httpd 是工作在 prefork 并发模式。
打开 apache2 的配置文件 sudo vi /etc/apache2/apache2.conf
apache2 的并发控制模式,包括 prefork 和 worker 的部分修改为:
然后重启 apache2:
sudo /etc/init.d/apache2 stop
sudo /etc/init.d/apache2 start
即完成设置。
注意,MaxClients 默认最大为 250,若要超过这个值就要显式设置 ServerLimit,且 ServerLimit 要放在 MaxClients 之前,值要不小于 MaxClients,不然重启时会有提示。重启 apache2 后,通过反复执行 pgrep httpd|wc - l 来观察连接数,可以看到连接数在达到 MaxClients 的设值后不再增加,但此时访问网站也很流畅,那就不用贪心再设置更高的值了,不然以后如果网站访问突增不小心就会耗光服务器内存,可根据以后访问压力趋势及内存的占用变化再逐渐调整,直到找到一个最优的设置值。
MaxRequestsPerChild 不能设置为 0,可能会因内存泄露导致服务器崩溃。
附:常用参数解释
<IfModule prefork.c>
# 有这个参数就不必像 apache1 一样修改源码才能修改 256 客户数的限制, 听讲要放到最前面才会生效,2000 是这个参数的最大值
ServerLimit 2000
# 指定服务器启动时建立的子进程数量,prefork 默认为 5。
StartServers 25
# 指定空闲子进程的最小数量,默认为 5。如果当前空闲子进程数少于 MinSpareServers,那么 Apache 将以最大每秒一个的速度产生新的子进程。此参数不要设的太大。
MinSpareServers 25
# 设置空闲子进程的最大数量,默认为 10。如果当前有超过 MaxSpareServers 数量的空闲子进程,那么父进程将杀死多余的子进程。此参数不要设的太大。如果你将该指令的值设置为比 MinSpareServers 小,Apache 将会自动将其修改成”MinSpareServers+1″。
MaxSpareServers 50
# 限定同一时间客户端最大接入请求的数量(单个进程并发线程数),默认为 256。任何超过 MaxClients 限制的请求都将进入等候队列, 一旦一个链接被释放,队列中的请求将得到服务。要增大这个值,你必须同时增大 ServerLimit。
MaxClients 2000
# 每个子进程在其生存期内允许伺服的最大请求数量,默认为 10000. 到达 MaxRequestsPerChild 的限制后,子进程将会结束。如果 MaxRequestsPerChild 为”0″,子进程将永远不会结束。
MaxRequestsPerChild 10000
</IfModule>
将 MaxRequestsPerChild 设置成非零值有两个好处:
1. 可以防止 (偶然的) 内存泄漏无限进行,从而耗尽内存。
2. 给进程一个有限寿命,从而有助于当服务器负载减轻的时候减少活动进程的数量。
工作方式:
一个单独的控制进程 (父进程) 负责产生子进程,这些子进程用于监听请求并作出应答。Apache 总是试图保持一些备用的 (spare)或者是空闲的子进程用于迎接即将到来的请求。这样客户端就不需要在得到服务前等候子进程的产生。在 Unix 系统中,父进程通常以 root 身份运行以便邦定 80 端口,而 Apache 产生的子进程通常以一个低特权的用户运行。User 和 Group 指令用于设置子进程的低特权用户。运行子进程的用户必须要对它所服务的内容有读取的权限,但是对服务内容之外的其他资源必须拥有尽可能少的权限。
我们调优常常要查看 httpd 进程数(即 prefork 模式下 Apache 能够处理的并发请求数):
#ps -ef | grep httpd | wc -l
出现的结果, 就是当前 Apache 能够处理的多少个并发请求,这个值 Apache 根据负载情况自动调。
相关阅读:
Linux 下 Apache 与 Tomcat 的完全分布式集群配置(负载均衡)http://www.linuxidc.com/Linux/2013-08/89072.htm
Linux 网站架构系列之 Apache—- 部署篇 http://www.linuxidc.com/Linux/2013-11/92304.htm
日志分析工具 Awstats 实战之 Apache 篇 - 多站点日志分析 http://www.linuxidc.com/Linux/2013-11/92273.htm
在 Ubuntu 13.10 下安装支持 SSL 的 Apache http://www.linuxidc.com/Linux/2013-11/92266.htm
Apache2(http.2.4.6)+ Tomcat 7.0 集群安装与配置 http://www.linuxidc.com/Linux/2013-11/92322.htm
更多 Ubuntu 相关信息见Ubuntu 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=2