- 论坛徽章:
- 0
|
lz的prefork配置有点保守,我也给一个组参数作为锦上添花。
另外如果你的程序是php的话,使用prefork是最佳选择,php对线程的支持有问题。
设置apache的MaxClients (设置可连接的最大连接数)
ServerLimit 1024
StartServers 30
MinSpareServers 30
MaxSpareServers 80
MaxClients 1024
MaxRequestsPerChild 3000
1、对于prefork MPM,只有在你需要将MaxClients设置成高于默认值256的时候才需要使用ServerLimit指令。要将此指令的值保持和MaxClients一样。
Apache在编译时内部有一个硬限制“ServerLimit 20000”(对于preforkMPM为“ServerLimit 200000”)。你不能超越这个限制。
2、也可以编译前修改apache源代码去掉这个限制:server/mpm/prefork/prefork.c
3、根据上面的配置,只要 Web 服务器启动,就会立即以root是否启动一个httpd进程,同时这个进程启动 30 个子进程,并尽力保持 30 到 80 个空闲服务器运行。进程数的硬性限制由 MaxClients 指定。
4、尽管一个进程能够处理许多相继的请求,Apache 还是会取消连接数超过 3,000 以后的进程,这降低了内存泄漏的风险,如果MaxRequestsPerChild为"0",子进程将永远不会结束。
5、最重要的是将MaxClients设置为一个足够大的数值以处理潜在的请求高峰,同时又不能太大,以致需要使用的内存超出物理内存的大小。 |
|