【PHP-FPM】配置,优化性能
关于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】配置,优化性能相关推荐
- HBase性能优化方法总结(1):配置优化
配置优化 zookeeper.session.timeout 默认值:3分钟(180000ms) 说明:RegionServer与Zookeeper间的连接超时时间.当超时时间到后,ReigonSer ...
- 配置Tomcat性能优化
配置Tomcat性能优化
- IDEA最全最常用的配置与性能优化(Java必备)
IDEA最全最常用的配置与性能优化(Java必备) 简介 一.性能优化 1.JVM启动参数 2.清空缓存并重建索引 二.优化设置 1.显示方法分隔符 2.忽略大小写提示 3.主题设置 4.设置字体 5 ...
- centos 7.6 —— Nginx 配置网页防盗链FPM参数优化
centos 7.6 -- Nginx 配置网页防盗链&&FPM参数优化 一.网页防盗链 (1)防盗链端--服务端配置(192.168.75.134) 1.1 服务端配置DNS服务,域 ...
- Mysql性能优化、Mysql参数优化、Mysql配置优化
码字不易,转载请附原链,搬砖繁忙回复不及时见谅,技术交流请加QQ群:909211071 Mysql性能优化.Mysql参数优化.Mysql配置优化.Mysql参数优化对于不同的网站,及在线量等,以及机 ...
- apache性能配置优化
最近在进行apache性能优化设置.在修改apache配置文件之前需要备份原有的配置文件夹conf,这是网站架设的好习惯.以下的apache配置调优均是在red had的环境下进行的. httpd相关 ...
- MySQL数据库性能优化由浅入深(表设计、慢查询、SQL索引优化、Explain分析、Show Profile分析、配置优化)
文章目录 0 SQL性能分析 1 表的设计合理化 1.1 为什么需要范式 1.2 三范式原理 1.3 什么样的表才满足三范式 2 慢查询 2.1 慢查询介绍 2.2 慢查询步骤 3 添加适当索引 3. ...
- 通用配置——Nginx优化性能
系统优化 系统内核优化参考 $ cat /etc/sysctl.conf net.ipv4.tcp_max_syn_backlog = 65536 net.core.netdev_max_backlo ...
- Nginx高级优化(2): shell脚本日志切割,连接超时,进程数,网页压缩,防盗链,FPM 参数优化!!
呕心沥血书写,看完后对Nginx了如执掌,不看真的后悔!! shell脚本日志分割 设置连接超时 Nginx深入优化 更改进程数 配置网页压缩 配置防盗链 20.0.0.25 主机:开始盗链 20.0 ...
- [转帖]ASP.NET中常用的优化性能的方法
ASP.NET中常用的优化性能的方法(转贴,Icyer收集整理) 1. 数据库访问性能优化 数据库的连接和关闭 访问数据库资源需要创建连接.打开连接和关闭连接几个操作.这些过程需要 ...
最新文章
- Leetcode 15.三数之和 双指针 or 暴力哈希
- 最好用的嵌入式网络C库、Lua库
- 在Foreda8上安装libaio-0.3.105-2.i386.rpm
- Windows内核实验005 Inline Hook
- 【数学】Chaarshanbegaan at Cafebazaar
- 漫步最优化七——介绍
- 对计算机网络教程的计划,计算机网络技术与应教程教学计划14.doc
- mysql+基本代码_PHP+MySQL扎实基本功十句话_php
- python生成密码字典
- 计算机绘图国标规定,机械制图教程(1.1)国家标准关于制图的一般规定
- PHP汉字转化为拼音
- 直流电机驱动电路整理笔记
- 小波分析 瞬态信号 matlab,小波变换在瞬态信号波至点检测中的应用研究
- linux端口映射到内网机器,linux如何将公网IP映射到局域网IP?
- 仿比心源码,uniApp自适应手机屏幕高度
- oracle会话占用pga异常,OLTP,单个session占pga大于2G,有见过的没?
- 夏にありがとう(向夏天致谢)-因幡晃
- 开发一个电商网站大概多少钱
- 【模式匹配】之 —— Sunday算法
- 系统常用的通信对接方式
热门文章
- ML之K-means:基于DIY数据集利用K-means算法聚类(测试9种不同聚类中心的模型性能)
- ML之NB:(NLP)基于sklearn库利用不同语种数据集训练NB(朴素贝叶斯)算法,对新语种进行语种检测
- 成功解决Error: Cannot find module 'web3'
- DL之Keras:基于Keras框架建立模型实现【预测】功能的简介、设计思路、案例分析、代码实现之详细攻略(经典,建议收藏)
- 上传本地代码到gitHub过程详解
- 洛谷P2670扫雷游戏题解
- 泛型--协变与逆变(转)
- ReactiveCocoa的使用方法
- com.microsoft.sqlserver.jdbc.SQLServerException: 索引 1 超出范围
- 5年博龄只有十几篇文章,惭愧呀