PHP-FPM的配置与优化讲解


Posted in PHP onMarch 15, 2019

PHP-FPM(FastCGI Process Manager:FastCGI进程管理器)是一个PHPFastCGI管理器,用于管理 PHP 进程池、接收和处理 Web 服务器的请求。PHP-FPM 会创建一个主进程,控制何时以及如何把 HTTP 请求转发给一个或多个子进程处理。

全局配置

emergency_restart_threshold = 60(建议值)

如果子进程在 emergency_restart_interval 设定的时间内收到该参数设定次数的 SIGSEGV 或者 SIGBUS退出信息号,则FPM会重新启动。

emergency_restart_interval = 1m

用于设定平滑重启的间隔时,单位:s(秒),m(分),h(小时)或者 d(天)。默认单位:s(秒)。

这个两个设置的作用是,如果在指定的一段时间内指定的子进程失效了,让 PHP-FPM 重启。

这个两个设置默认是关闭的,建议开启,

进程池配置

PHP-FPM 中有一个 Pool Definitions 的区域,意为进程池,通常建议一个 PHP 应用使用一个进程池。

PHP-FPM 配置文件有默认名为 www 的配置内容。

user = 运行 PHP 的非 root 用户

子进程运行的用户。必须设置。

group = 运行 PHP 的非 root 用户所属的用户组

子进程运行的用户组。如果没有设置,则默认用户的组被使用。

listen = 127.0.0.1:9000 或者 /path/to/unix/socket

设置接受 FastCGI 请求的地址。

listen.allowed_clients = 127.0.0.1

设置允许连接到 FastCGI 的服务器 IP 地址。默认情况,这个字段是注释掉了,建议开启。

pm = 生产环境 static

设置进程管理器如何管理子进程。可用值:static,ondemand,dynamic。

  • static:子进程的数量是固定的(pm.max_children)。
  • ondemand:进程在有需求时才产生(当请求时,与 dynamic 相反,pm.start_servers 在服务启动时即启动。
  • dynamic:子进程的数量在下面配置的基础上动态设置:pm.max_children,pm.start_servers,pm.min_spare_servers,pm.max_spare_servers。

pm.max_children =

设置 PHP-FPM 进程池中最多能有多少个进程。这个没有绝对正确值,要根据实际情况设置。

假设每个 PHP 进程使用 20-30M 内存,为整个 PHP-FPM 环境配置了 512 M 内存,那么可以设置为 17-25 中间值。

pm.start_servers =

设置启动时创建的子进程数目。仅在 pm 设置为 dynamic 时使用。

pm.min_spare_servers =

设置空闲服务进程的最低数目。仅在 pm 设置为 dynamic 时使用。必须设置。

pm.max_spare_servers =

设置空闲服务进程的最大数目。仅在 pm 设置为 dynamic 时使用。必须设置。

pm.max_requests = 1000

设置每个子进程重生之前服务的请求数。对于可能存在内存泄漏的第三方模块来说是非常有用的。如果设置为 '0' 则一直接受请求,默认值:0。

slowlog =

慢请求的记录日志。

注意 PHP-FPM 进程所属的用户和用户组必须具有相应文件的写权限。

request_slowlog_timeout = 5

当一个请求该设置的超时时间后,就会将对应的 PHP 调用堆栈信息完整写入到慢日志中。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。如果你想了解更多相关内容请查看下面相关链接

PHP 相关文章推荐
PHP写的加密函数,支持私人密钥(详细介绍)
Jun 09 PHP
php获得用户ip地址的比较不错的方法
Feb 08 PHP
thinkphp浏览历史功能实现方法
Oct 29 PHP
PHP调用MySQL存储过程并返回值的方法
Dec 26 PHP
php读取der格式证书乱码解决方法
Jun 22 PHP
php类常量用法实例分析
Jul 09 PHP
Zend Framework开发入门经典教程
Mar 23 PHP
PHP目录与文件操作技巧总结(创建,删除,遍历,读写,修改等)
Sep 11 PHP
PHP实现的AES双向加密解密功能示例【128位】
Sep 03 PHP
PHP类的自动加载机制实现方法分析
Jan 10 PHP
TP5(thinkPHP5框架)实现显示错误信息及行号功能的方法
Jun 03 PHP
基于thinkphp5框架实现微信小程序支付 退款 订单查询 退款查询操作
Aug 17 PHP
php-fpm中max_children的配置
Mar 15 #PHP
使用Zookeeper分布式部署PHP应用程序
Mar 15 #PHP
php根据命令行参数生成配置文件详解
Mar 15 #PHP
详解PHP的抽象类和抽象方法以及接口总结
Mar 15 #PHP
PHP基于面向对象封装的分页类示例
Mar 15 #PHP
浅谈PHP无限极分类原理
Mar 14 #PHP
详解PHP队列的实现
Mar 14 #PHP
You might like
php批量添加数据与批量更新数据的实现方法
2014/12/16 PHP
php使用gd2绘制基本图形示例(直线、圆、正方形)
2017/02/15 PHP
Yii2框架加载css和js文件的方法分析
2019/05/25 PHP
struts2 jquery 打造无限层次的树
2009/10/23 Javascript
Javascript 实现TreeView CheckBox全选效果
2010/01/11 Javascript
javascript 弹出层组件(升级版)
2011/05/12 Javascript
固定网页背景图同时保持图片比例的思路代码
2013/08/15 Javascript
JS 排序输出实现table行号自增前端动态生成的tr
2014/08/13 Javascript
浅谈利用JavaScript进行的DDoS攻击原理与防御
2015/06/04 Javascript
AngularJS实用开发技巧(推荐)
2016/07/13 Javascript
关于Javascript中defer和async的区别总结
2016/09/20 Javascript
jQuery实现带延时功能的水平多级菜单效果【附demo源码下载】
2016/09/21 Javascript
Ajax跨域实现代码(后台jsp)
2017/01/21 Javascript
Vue2.0实现1.0的搜索过滤器功能实例代码
2017/03/20 Javascript
vue上传图片组件编写代码
2017/07/26 Javascript
简单的Vue SSR的示例代码
2018/01/12 Javascript
jQuery对底部导航进行跳转并高亮显示的实例代码
2019/04/23 jQuery
python爬虫教程之爬取百度贴吧并下载的示例
2014/03/07 Python
Python程序员鲜为人知但你应该知道的17个问题
2014/06/04 Python
Python多线程编程(六):可重入锁RLock
2015/04/05 Python
对numpy.append()里的axis的用法详解
2018/06/28 Python
Python json模块dumps、loads操作示例
2018/09/06 Python
python添加菜单图文讲解
2019/06/04 Python
python使用Matplotlib改变坐标轴的默认位置
2019/10/18 Python
Python Scrapy框架第一个入门程序示例
2020/02/05 Python
Python多个装饰器的调用顺序实例解析
2020/05/22 Python
语文教育专业应届生求职信
2013/11/23 职场文书
劳动模范事迹材料
2014/01/19 职场文书
团日活动策划书
2014/02/01 职场文书
小学社会实践活动总结
2014/07/03 职场文书
小型婚礼主持词
2015/06/30 职场文书
2016十一国庆节慰问信
2015/12/01 职场文书
阳光体育运动标语口号
2015/12/26 职场文书
2017公司年会主持人开幕词
2016/03/04 职场文书
zabbix监控mysql的实例方法
2021/06/02 MySQL
Python Matplotlib绘制动画的代码详解
2022/05/30 Python