阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

php-fpm的max_chindren的一些误区

131次阅读
没有评论

共计 1620 个字符,预计需要花费 5 分钟才能阅读完成。

现在 nginx + fpm 基本成为主流的配置,其中我们比较关注的是 pm.max_chindren 的配置

首先,我们关注一个前提设置:pm = static/dynamic,

这个选项是标识 fpm 子进程的产生模式:

static:表示在 fpm 运行时直接 fork 出 pm.max_chindren 个 worker 进程,

dynamic:表示,运行时 fork 出 start_servers 个进程,随着负载的情况,动态的调整,最多不超过 max_children 个进程。

一般推荐用 static,优点是不用动态的判断负载情况,提升性能,缺点是多占用些系统内存资源。

上面的告诉我们 max_chindren 代表的 worker 的进程数。普遍认为,这个配置越多能同时处理的并发也就越多,这是一个比较大的误区:

1)查看了 fpm 的相关源码,管理进程和 worker 进程是通过 pipe 进行数据通讯的。所以进程多了,增加进程管理的开销,系统进程切换的开销,更核心的是,能并发执行的 fpm 进程不会超过 cpu 个数。通过多开 worker 的个数来提升 qps,是错误的理解,不会说你多开了几个进程,就多出几个 cpu 来处理。

2)但 worker 进程开少了,如果 server 比较繁忙的话,会导到 nginx 把数据打到 fpm 的时候,发现所有的 woker 都在工作中,没有空闲的 worker 来接受请求,从而导致 502。

那 worker 数到底该怎么配置呢?

理论上 woker 进程数 =cpu 的个数是最合理的,但由于第 2 点的原因,可能每个 worker 都没处理完请求,这样,就会频现 502 了。但多开请求,只是说避免 502,暂时把请求 hang 住,但这只是缓解之道,实际上这不但不会增加系统的并发,而且会加重系统的负荷,所以,设置一个合理的 worker 数就比较重要了。

天下武功,唯快不破,只有尽可能的提升程序的效率,把单个请求的时间压缩到最低,这样,单个 worker 的处理时间变短了,那在单位时间里能处理的请求自然就多了。

那么可以通过每个 worker 在单位时间内处理的请求数来预估 max_children 的个数。假如最大的一个请求的处理时间是 100ms 内,而在 100ms 之内同时有 100 个请求过来,那了理论上就需要配置 100 个 worker 进程,先把请求给 hang 住。

但最大的请求耗时可能会受很多外在的情况影响,不太好预估,其实这里有一个捷径,来配置你的 max_children 数,就是你前期先把 max_childnren 设置成一个比较大的值,稳定运行一段时间后,观察 fpm 的 status 里的 max active processes 是多少,然后把 max_children 配置比他大一些就 ok 了。

希望这些文章能给大家有一些帮助。

LAMP-PHP-fpm 服务器配置 http://www.linuxidc.com/Linux/2014-06/103093.htm

Ubuntu 14.04 LTS 安装 LNMP Nginx\PHP5 (PHP-FPM)\MySQL http://www.linuxidc.com/Linux/2014-05/102351.htm

高负载 PHP-FPM 调优 http://www.linuxidc.com/Linux/2013-07/86963.htm

Nginx php-fpm 出现 502 解决办法和调优心得 http://www.linuxidc.com/Linux/2013-01/78566.htm

Nginx+PHP-FPM 在两台服务器实现 http://www.linuxidc.com/Linux/2012-11/74001.htm

Ubuntu 10.04 配置 nginx + php-fpm 模式 http://www.linuxidc.com/Linux/2012-11/74001p2.htm

Nginx&&PHP-FPM 配置及优化指南(上)http://www.linuxidc.com/Linux/2012-07/65732.htm

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-20发表,共计1620字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中