首页 > 学技术 > 技术网文 > Web服务器 > 正文

[精彩] 关于apache2.0(prefork)里增加"MaxClient"的声明


来源 chinaunix.net 酷勤网整理

今天在已经编译好的apache2.0.48(mpm为默认的prefork)想改大MaxClient的大小超过256,在网上论坛上看说如下增加serverlimit一行就行了。
<IfModule prefork.c>; 
StartServers 10 
MinSpareServers 10 
MaxSpareServers 15 
[color=darkred]ServerLimit  2000 [/color]
MaxClients 1000 
MaxRequestsPerChild 10000 
</IfModule>; 
但如上所说加了一行,还是不行,提示MaxClient超过256,须添加ServerLimit参数才行。
郁闷了很久,我就估计是ServerLimit一行没生效,又google一下,翻过千山万水,终于找到原因
需要把ServerLimit放到最前面,如下就行了
<IfModule prefork.c>;
[color=darkred]ServerLimit     2000[/color]
StartServers         10
MinSpareServers     10
MaxSpareServers     15
MaxClients         1500
MaxRequestsPerChild 10000
</IfModule>;
小弟,得到此大法后,不敢独享,特别的给大家提醒一下.



 creat7151 回复于:2005-09-09 13:30:49

谢谢,收下,让后来人少走不少弯路


 hfh08 回复于:2005-09-09 19:54:08

这个文件在什么位置的


 ipaddr 回复于:2005-09-09 22:18:26

httpd.conf

你安装在哪,就是在哪的。

Liunux,一般在/etc/httpd/conf/httpd.conf/ (RPM安装)

/usr/local/apache2/conf/httpd.cond (编译安装)


 rickyfang 回复于:2005-09-15 20:10:33

在Apache2.0中新加入了ServerLimit指令,使得无须重编译Apache就可以加大MaxClients。下面是笔者的prefork配置段。 

<IfModule prefork.c>; 
StartServers 10 
MinSpareServers 10 
MaxSpareServers 15 
ServerLimit 2000 
MaxClients 1500 
MaxRequestsPerChild 10000 
</IfModule>; 

BTW: ServerLimit的最大值是20000,这对于大多数站点是足够了,但如果你一定要再加大的话,那么这个值位于源代码树下的server/mpm/prefork/prefork.c中。里面的 

#define DEFAULT_SERVER_LIMIT 256 
#define MAX_SERVER_LIMIT 20000 

这两行就对应着MaxClients和ServerLimit的限制值。但我相信很少有人可以用到20000的并发连接数。 
如果你有耐性看完了我这篇文档,我相信您对Apache2.0 缺省的prefork的工作原理有所熟悉了,理解了它的工作过程后,就可以根据您的实际情况在FreeBSD下来配置Apache相关的核心参数以获得最大的性能。


 rickyfang 回复于:2005-09-15 20:11:59

http://bbs.chinaunix.net/forum/viewtopic.php?t=316171&highlight=rickyfang

这个问题,很早就有了,你可以查下,呵呵,好像有点不同哟!


 ipaddr 回复于:2005-09-15 20:45:27

好象,有ServerLimit,可以不要MaxClient




原文链接:http://bbs.chinaunix.net/viewthread.php?tid=608820
转载请注明作者名及原文出处



收藏本页到: