关于pm.max_children

一个前提设置:
标识fpm子进程的产生模式:pm = static/dynamic

  • static :表示在fpm运行时直接fork出pm.max_children个worker进程,
  • dynamic:表示运行时fork出start_servers个进程,随着负载的情况,动态的调整,最多不超过max_children个进程。

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

max_children代表的worker的进程数。对于配置越多能同时处理的并发也就越多,则是一个比较大的误区:

  • 管理进程和worker进程是通过pipe进行数据通讯的。

    • 所以进程多了,增加进程管理的开销,系统进程切换的开销,
    • 更核心的是,能并发执行的fpm进程不会超过cpu个数。
    • 因此通过多开worker的个数来提升qps是错误的。
  • 但worker进程开少了,如果server比较繁忙的话,会导到nginx把数据打到fpm的时候,发现所有的woker都在工作中,没有空闲的worker来接受请求,从而导致502。

如何配置max_children及优化PHP-FPM

php-fpm.conf有两个至关重要的参数:

  • request_terminate_timeout:可以根 据你服务器的性能进行设定

    • request_terminate_timeout的值一般来说值越高,性能越好,20分钟-30分钟都可以。
    • 由于服务器PHP脚本需要长时间运行,有的可能会超过10分钟因此我设置了900秒,这样不会导致PHP-CGI死掉而出现502 Bad gateway这个错误。
  • max_children:原则上是越大越好;

    • max_children 的值原则上是越大越好,php-cgi的进程多了就会处理的很快,排队的请求就会很少。

    • 设置 max_children 也需要根据服务器的性能进行设定,

      一般来说一台服务器正常情况下每一个php-cgi所耗费的内存在20M左右,因此”max_children”我设置成40个,20M*40=800M也就是说在峰值的时候所有PHP-CGI所耗内存在800M以内,低于我的有效内存1Gb。

      而如果我 的”max_children”设置的较小,比如5-10个,那么php-cgi就会“很累”,处理速度也很慢,等待的时间也较长。如果长时间没有得到处 理的请求就会出现504 Gateway Time-out这个错误,而正在处理的很累的那几个php-cgi如果遇到了问题就会出现502 Bad gateway这个错误。

    • 计算:pm.max_children = (total RAM - RAM used by other process) / (average amount of RAM used by a PHP process)

  • max_requests:每个进程若超过这个数目(跟php进程有一点点关系,关系不大),就自动杀死。

  • start_servers:the number of children created on startup

    • 计算:pm.start_servers = max_spare_servers / 2

php-fpm.d/www.conf PM配置

 78 ; Choose how the process manager will control the number of child processes.79 ; Possible Values:80 ;   static  - a fixed number (pm.max_children) of child processes;81 ;   dynamic - the number of child processes are set dynamically based on the82 ;             following directives. With this process management, there will be83 ;             always at least 1 children.84 ;             pm.max_children      - the maximum number of children that can85 ;                                    be alive at the same time.86 ;             pm.start_servers     - the number of children created on startup.87 ;             pm.min_spare_servers - the minimum number of children in 'idle'88 ;                                    state (waiting to process). If the number89 ;                                    of 'idle' processes is less than this90 ;                                    number then some children will be created.91 ;             pm.max_spare_servers - the maximum number of children in 'idle'92 ;                                    state (waiting to process). If the number93 ;                                    of 'idle' processes is greater than this94 ;                                    number then some children will be killed.95 ;  ondemand - no children are created at startup. Children will be forked when96 ;             new requests will connect. The following parameter are used:97 ;             pm.max_children           - the maximum number of children that98 ;                                         can be alive at the same time.99 ;             pm.process_idle_timeout   - The number of seconds after which
100 ;                                         an idle process will be killed.

Docker Nginx PHP-FPM config example

【PHP-FPM】配置,优化性能相关推荐

  1. HBase性能优化方法总结(1):配置优化

    配置优化 zookeeper.session.timeout 默认值:3分钟(180000ms) 说明:RegionServer与Zookeeper间的连接超时时间.当超时时间到后,ReigonSer ...

  2. 配置Tomcat性能优化

    配置Tomcat性能优化

  3. IDEA最全最常用的配置与性能优化(Java必备)

    IDEA最全最常用的配置与性能优化(Java必备) 简介 一.性能优化 1.JVM启动参数 2.清空缓存并重建索引 二.优化设置 1.显示方法分隔符 2.忽略大小写提示 3.主题设置 4.设置字体 5 ...

  4. centos 7.6 —— Nginx 配置网页防盗链FPM参数优化

    centos 7.6 -- Nginx 配置网页防盗链&&FPM参数优化 一.网页防盗链 (1)防盗链端--服务端配置(192.168.75.134) 1.1 服务端配置DNS服务,域 ...

  5. Mysql性能优化、Mysql参数优化、Mysql配置优化

    码字不易,转载请附原链,搬砖繁忙回复不及时见谅,技术交流请加QQ群:909211071 Mysql性能优化.Mysql参数优化.Mysql配置优化.Mysql参数优化对于不同的网站,及在线量等,以及机 ...

  6. apache性能配置优化

    最近在进行apache性能优化设置.在修改apache配置文件之前需要备份原有的配置文件夹conf,这是网站架设的好习惯.以下的apache配置调优均是在red had的环境下进行的. httpd相关 ...

  7. MySQL数据库性能优化由浅入深(表设计、慢查询、SQL索引优化、Explain分析、Show Profile分析、配置优化)

    文章目录 0 SQL性能分析 1 表的设计合理化 1.1 为什么需要范式 1.2 三范式原理 1.3 什么样的表才满足三范式 2 慢查询 2.1 慢查询介绍 2.2 慢查询步骤 3 添加适当索引 3. ...

  8. 通用配置——Nginx优化性能

    系统优化 系统内核优化参考 $ cat /etc/sysctl.conf net.ipv4.tcp_max_syn_backlog = 65536 net.core.netdev_max_backlo ...

  9. Nginx高级优化(2): shell脚本日志切割,连接超时,进程数,网页压缩,防盗链,FPM 参数优化!!

    呕心沥血书写,看完后对Nginx了如执掌,不看真的后悔!! shell脚本日志分割 设置连接超时 Nginx深入优化 更改进程数 配置网页压缩 配置防盗链 20.0.0.25 主机:开始盗链 20.0 ...

  10. [转帖]ASP.NET中常用的优化性能的方法

    ASP.NET中常用的优化性能的方法(转贴,Icyer收集整理) 1.       数据库访问性能优化     数据库的连接和关闭 访问数据库资源需要创建连接.打开连接和关闭连接几个操作.这些过程需要 ...

最新文章

  1. Leetcode 15.三数之和 双指针 or 暴力哈希
  2. 最好用的嵌入式网络C库、Lua库
  3. 在Foreda8上安装libaio-0.3.105-2.i386.rpm
  4. Windows内核实验005 Inline Hook
  5. 【数学】Chaarshanbegaan at Cafebazaar
  6. 漫步最优化七——介绍
  7. 对计算机网络教程的计划,计算机网络技术与应教程教学计划14.doc
  8. mysql+基本代码_PHP+MySQL扎实基本功十句话_php
  9. python生成密码字典
  10. 计算机绘图国标规定,机械制图教程(1.1)国家标准关于制图的一般规定
  11. PHP汉字转化为拼音
  12. 直流电机驱动电路整理笔记
  13. 小波分析 瞬态信号 matlab,小波变换在瞬态信号波至点检测中的应用研究
  14. linux端口映射到内网机器,linux如何将公网IP映射到局域网IP?
  15. 仿比心源码,uniApp自适应手机屏幕高度
  16. oracle会话占用pga异常,OLTP,单个session占pga大于2G,有见过的没?
  17. 夏にありがとう(向夏天致谢)-因幡晃
  18. 开发一个电商网站大概多少钱
  19. 【模式匹配】之 —— Sunday算法
  20. 系统常用的通信对接方式

热门文章

  1. ML之K-means:基于DIY数据集利用K-means算法聚类(测试9种不同聚类中心的模型性能)
  2. ML之NB:(NLP)基于sklearn库利用不同语种数据集训练NB(朴素贝叶斯)算法,对新语种进行语种检测
  3. 成功解决Error: Cannot find module 'web3'
  4. DL之Keras:基于Keras框架建立模型实现【预测】功能的简介、设计思路、案例分析、代码实现之详细攻略(经典,建议收藏)
  5. 上传本地代码到gitHub过程详解
  6. 洛谷P2670扫雷游戏题解
  7. 泛型--协变与逆变(转)
  8. ReactiveCocoa的使用方法
  9. com.microsoft.sqlserver.jdbc.SQLServerException: 索引 1 超出范围
  10. 5年博龄只有十几篇文章,惭愧呀