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 相关文章推荐
windows xp下安装pear
Dec 02 PHP
php读取30天之内的根据算法排序的代码
Apr 06 PHP
php实现aes加密类分享
Feb 16 PHP
php中ob_get_length缓冲与获取缓冲长度实例
Nov 20 PHP
PHP答题类应用接口实例
Feb 09 PHP
codeigniter发送邮件并打印调试信息的方法
Mar 21 PHP
php中实现用数组妩媚地生成要执行的sql语句
Jul 10 PHP
PHP 配置后台登录以及模板引入
Jan 24 PHP
PHP更安全的密码加密机制Bcrypt详解
Jun 18 PHP
PHP 实现文件压缩解压操作的方法
Jun 14 PHP
php根据地址获取百度地图经纬度的实例方法
Sep 03 PHP
php高性能日志系统 seaslog 的安装与使用方法分析
Feb 29 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投票系统防刷票判断流程分析
2012/02/04 PHP
php生成zip压缩文件的方法详解
2013/06/09 PHP
深入php socket的讲解与实例分析
2013/06/13 PHP
PHP return语句另类用法不止是在函数中
2014/09/17 PHP
PIGCMS 如何关闭聊天机器人
2015/02/12 PHP
php实现指定字符串中查找子字符串的方法
2015/03/17 PHP
Laravel重写用户登录简单示例
2016/10/08 PHP
解析PHP之提取多维数组指定列的方法
2017/01/03 PHP
php-fpm添加service服务的例子
2018/04/27 PHP
ExtJS 2.0实用简明教程 之ExtJS版的Hello
2009/04/29 Javascript
jQuery帮助之筛选查找 children([expr])
2011/01/31 Javascript
使用documentElement正确取得当前可见区域的大小
2014/07/25 Javascript
javascript数组输出的两种方式
2015/01/13 Javascript
JavaScript中用getDate()方法返回指定日期的教程
2015/06/09 Javascript
Javascript中的方法和匿名方法实例详解
2015/06/13 Javascript
jquery实现先淡出再折叠收起的动画效果
2015/08/07 Javascript
JS正则表达式修饰符global(/g)用法分析
2016/12/27 Javascript
谈谈JavaScript数组常用方法总结
2017/01/24 Javascript
angular2+node.js express打包部署的实战
2017/07/27 Javascript
vue 修改 data 数据问题并实时显示的方法
2018/08/27 Javascript
从零开始搭建vue移动端项目到上线的步骤
2018/10/15 Javascript
JS实现根据数组对象的某一属性排序操作示例
2019/01/14 Javascript
详解单页面路由工程使用微信分享及二次分享解决方案
2019/02/22 Javascript
js事件机制----捕获与冒泡机制实例分析
2020/05/22 Javascript
[54:45]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 Optic vs OG
2018/04/02 DOTA
python 常用的基础函数
2018/07/10 Python
使用OpenCV去除面积较小的连通域
2020/07/05 Python
matplotlib常见函数之plt.rcParams、matshow的使用(坐标轴设置)
2021/01/05 Python
css3进行截取替代js的substring
2013/09/02 HTML / CSS
Omio意大利:全欧洲低价大巴、火车和航班搜索和比价
2017/12/02 全球购物
桥梁与隧道工程专业本科生求职信
2013/10/08 职场文书
运动会入场口号
2014/06/07 职场文书
销售顾问工作计划书
2014/08/15 职场文书
缓刑人员思想汇报
2014/10/11 职场文书
2015最新学生自我评价范文
2015/03/03 职场文书
golang在GRPC中设置client的超时时间
2021/04/27 Golang