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 相关文章推荐
下载文件的点击数回填
Oct 09 PHP
PHP取得一个类的属性和方法的实现代码
May 22 PHP
通过PHP current函数获取未知字符键名数组第一个元素的值
Jun 24 PHP
PHP入门之常量简介和系统常量
May 12 PHP
php实现给图片加灰色半透明效果的方法
Oct 20 PHP
PHP中返回引用类型的方法
Apr 03 PHP
PHP模板引擎Smarty中变量的使用方法示例
Apr 11 PHP
Joomla使用Apache重写模式的方法
May 04 PHP
php删除二维数组中的重复值方法
Mar 12 PHP
php经典趣味算法实例代码
Jan 21 PHP
php把文件设置为插件的技巧方法
Feb 03 PHP
Yii框架多语言站点配置方法分析【中文/英文切换站点】
Apr 07 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获取163、gmail、126等邮箱联系人地址【已测试2009.10.10】
2009/10/11 PHP
对于ThinkPHP框架早期版本的一个SQL注入漏洞详细分析
2014/07/04 PHP
PHP页面静态化――纯静态与伪静态用法详解
2020/06/05 PHP
Jquery数独游戏解析(一)-页面布局
2010/11/05 Javascript
利用js实现前台动态添加文本框,后台获取文本框内容(示例代码)
2013/11/25 Javascript
返回顶部按钮响应滚动且动态显示与隐藏
2014/10/14 Javascript
JS实现网页滚动条感应鼠标变色的方法
2015/02/26 Javascript
javascript遇到html5的一些表单属性
2015/07/05 Javascript
js验证身份证号有效性并提示对应信息
2015/10/19 Javascript
jquery验证邮箱格式并显示提交按钮
2015/11/07 Javascript
AngularJS教程之MVC体系结构详解
2016/08/16 Javascript
详解Bootstrap的iCheck插件checkbox和radio
2016/08/24 Javascript
Angularjs 实现分页功能及示例代码
2016/09/14 Javascript
JavaScript错误处理和堆栈追踪详解
2017/04/18 Javascript
jQuery模拟爆炸倒计时功能实例代码
2017/08/21 jQuery
深入理解ES6中let和闭包
2018/02/22 Javascript
js正则相关知识点专题
2018/05/10 Javascript
layUI使用layer.open,在content打开数据表格,获取值并返回的方法
2019/09/26 Javascript
element-ui tooltip修改背景颜色和箭头颜色的实现
2019/12/16 Javascript
小程序实现多个选项卡切换
2020/06/19 Javascript
Angular+Ionic使用queryParams实现跳转页传值的方法
2020/09/05 Javascript
微信小程序实现转盘抽奖
2020/09/21 Javascript
[01:32:50]DOTA2-DPC中国联赛 正赛 DLG vs XG BO3 第一场 1月25日
2021/03/11 DOTA
python正则匹配查询港澳通行证办理进度示例分享
2013/12/27 Python
将python代码和注释分离的方法
2018/04/21 Python
Python中property函数用法实例分析
2018/06/04 Python
使用python快速实现不同机器间文件夹共享方式
2019/12/22 Python
分享unittest单元测试框架中几种常用的用例加载方法
2020/12/02 Python
python中remove函数的踩坑记录
2021/01/04 Python
为什么会有内存对齐
2016/10/10 面试题
测量实习生自我鉴定
2013/09/19 职场文书
校企合作协议书
2014/04/16 职场文书
应急处置方案
2014/06/16 职场文书
2014三年级班主任工作总结
2014/12/05 职场文书
幼儿园推普周活动总结
2015/05/07 职场文书
总结三种用 Python 作为小程序后端的方式
2022/05/02 Python