详解php-fpm中max_children的配置
发布:smiling 来源: PHP粉丝网 添加日期:2022-07-14 12:19:05 浏览: 评论:0
现在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进程不会超过cpu个数。通过多开worker的个数来提升qps, 是错误的理解,不会说你多开了几个进程,就多出几个cpu来处理。
2) worker进程开少了,如果server比较繁忙的话,会导到nginx把数据打到fpm的时候,发现所有的woker都在工作中,没有空闲的worker来接受请求,从而导致502。
3) 在实际业务中,由于我们有很多的i/o操作,比如读取数据库,或者内部rpc调用这类在等待i/o的过程中,进程会被系统sleep, 而不占用cpu,如果配置worker少了,也会导致cpu利用不上
那worker数到底该怎么配置呢?
理论上woker进程数=cpu的个数是最合理的,但由于第2点,可能每个worker都没处理完请求,这样,就会频现502了。但多开进程,只是说避免502,暂时把请求hang住,但这只是缓解之道,实际上这不但不会增加系统的并发,而且会加重系统的负荷,所以,基于2,3 ,设置一个合理的worker数就比较重要了。
天下武功,唯快不破,只有尽可能的提升程序的效率,把单个请求的时间压缩到最低,这样,单个worker的处理时间变短了,那在单位时间里能处理的请求自然就多了。
那么可以通过每个worker在单位时间内处理的请求数来预估max_children的个数。假如最大的一个请求的处理时间(xhprof里看cpu时间)是100ms内,而在100ms之内同时有100个请求过来,那了理论上就需要配置100个worker进程,先把请求给hang住。
但最大的请求耗时可能会受很多外在的情况影响,不太好预估,尤其是网络i/o也算在里面,我们可以借用第三方的profile工具,比如xhprof, 这类工具可以统计cpu的耗时,通过这个时间来计算真正的worker数量,比总时间来计算要合理很多,其实这里有一个捷径,来配置你的max_children数, 就是你前期先把max_childnren设置成一个比较大的值,稳定运行一段时间后,观察fpm的status里的 max active processes 是多少,然后把max_children配置比他大一些就ok了。
Tags: php-fpm max_children
相关文章
- ·php提示Undefined variable:引发的几个操作php-fpm等(2014-09-20)
- ·php-fpm出现Undefined variable几个解决办法(2014-09-21)
- ·php-fpm设置socket方式连接FastCGI(2016-02-16)
- ·关于CGI 和 PHP-FPM的对比分析(2016-08-22)
- ·PHP-FPM实现性能优化(2019-10-31)
- ·PHP-FPM是什么?PHP-FPM管理和配置的介绍(2019-12-30)
- ·php-fpm运行原理和模式的简单介绍(2020-01-15)
- ·php-fpm是什么?(2020-03-02)
- ·Opcache导致php-fpm崩溃nginx返回502(2021-05-15)
- ·PHP脚本监控Nginx 502错误并自动重启php-fpm(2021-05-26)
- ·mod_php、FastCGI、PHP-FPM等PHP运行方式对比(2021-06-06)
- ·php-fpm超时时间设置request_terminate_timeout资源问题分析(2021-12-23)
- ·CGI,FastCGI,PHP-CGI,PHP-FPM 简单了解(2022-06-15)
- ·入阶PHP-FPM(2022-06-19)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)