phpworker模式,Apacheprefork模式和worker模式参数详解prefork模式和worker模式参数详解
使⽤httpd -l命令查看使⽤的线程模块,⼀般是prefork.c和work.c两者,前者居多。确定后修改http配置⽂件相应的部分,如prefork.c 的:
StartServers 5
MinSpareServers 3
php支持多线程吗MaxSpareServers 10
ServerLimit 16
MaxClients 16
MaxRequestsPerChild 2000
其中配置项:
StartServers : 服务启动时启动进程数
MinSpareServers : 最⼩空闲进程,随时等待响应
MaxSpareServers:最⼤空前进程,响应结束时,减少进程
ServerLimit:最⼤进程数,
MaxClients:同时响应的最⼤请求数,多出等待
# MaxClients=ServerLimit*进程的线程数。
MaxRequestsPerChild:每个进程请求这么多次后就释放重新建⽴(为0时永远不释放)。
1.对于perfork.c模块,其特点是
每个⼦进程只有⼀个线程。每个进程在某个确定的时间只能维持⼀个连接。在⼤多数平台上,Prefork MPM在效率上要⽐Worker MPM要⾼,但是内存使⽤⼤得多。prefork的⽆线程设计在某些情况下将⽐worker更有优势:它可以使⽤那些没有处理好线程安全的第三⽅模块。
既然是⼀个进程⼀个线程,所以在prefork.c下,这两个值是相等的。注:ServerLimit最⼤值为2000.
2.对于work.c模块来说,是多线程的,默认是⼀个进程有25个线程,因此如果设置ServerLimit为100,那么MaxClients最⼤可以设置为2500。
这⾥说说我们可怜的vps,为了省钱⼀般只有512m-1g的内存,⽽prefork.c⼀个进程占⽤30-45m左右的内存(这个值跟php- fpm下php-cgi内存占⽤相当),所以如果有512m的内存话,系统+mysql(最⼩节约配置)吃掉250m左右,剩下的内存也就是跑10个进 程,所以这个值真的是很可怜,不过对于流量⼩的站点,这个并发也够⽤了,⼀般跑个上千的流量不是问题。所以做web服务,有钱还是多弄点内存的好,或者跑 lnmp是⽐较合适的选择。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论