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 相关文章推荐
模拟flock实现文件锁定
Feb 14 PHP
php构造函数实例讲解
Nov 13 PHP
php伪静态之APACHE篇
Jun 02 PHP
PHP、Nginx、Apache中禁止网页被iframe引用的方法
Oct 01 PHP
浅谈php和.net的区别
Sep 28 PHP
PHP实现定时执行任务的方法
Oct 05 PHP
PHP获取Exif缩略图的方法
Jul 13 PHP
详解HTTP Cookie状态管理机制
Jan 14 PHP
PHP单链表的实现代码
Jul 05 PHP
PHP curl批处理及多请求并发实现方法分析
Aug 15 PHP
详解PHP实现支付宝小程序用户授权的工具类
Dec 25 PHP
laravel框架实现后台登录、退出功能示例
Oct 31 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中使用preg_match_all匹配文章中的图片
2013/02/06 PHP
CI框架Session.php源码分析
2014/11/03 PHP
PHP使用反射机制实现查找类和方法的所在位置
2016/04/22 PHP
360搜索引擎自动收录php改写方案
2018/04/28 PHP
php计数排序算法的实现代码(附四个实例代码)
2020/03/31 PHP
javascript脚本调试方法小结
2008/11/24 Javascript
Javascript的数组与字典用法与遍历对象的属性技巧
2012/11/07 Javascript
js简易namespace管理器 实例代码
2013/06/21 Javascript
Javascript实现滚动图片新闻的实例代码
2013/11/27 Javascript
JS实现在网页中弹出一个输入框的方法
2015/03/03 Javascript
Angularjs实现带查找筛选功能的select下拉框示例代码
2016/10/04 Javascript
Iphone手机、安卓手机浏览器控制默认缩放大小的方法总结(附代码)
2017/08/18 Javascript
vue中v-model动态生成的实例详解
2017/10/27 Javascript
JS实现图片放大镜插件详解
2017/11/06 Javascript
Vue3.x源码调试的实现方法
2019/10/13 Javascript
Vue 使用beforeEach实现登录状态检查功能
2019/10/31 Javascript
有趣的JavaScript隐式类型转换操作实例分析
2020/05/02 Javascript
用vue设计一个日历表
2020/12/03 Vue.js
Python开发实例分享bt种子爬虫程序和种子解析
2014/05/21 Python
Python基础中所出现的异常报错总结
2016/11/19 Python
TensorFlow实现AutoEncoder自编码器
2018/03/09 Python
python zip,lambda,map函数代码实例
2020/04/04 Python
Python如何把十进制数转换成ip地址
2020/05/25 Python
Python使用内置函数setattr设置对象的属性值
2020/10/16 Python
季度思想汇报
2014/01/01 职场文书
《木笛》教学反思
2014/03/01 职场文书
片区教研活动总结
2014/07/02 职场文书
同意迁入证明模板
2014/10/26 职场文书
先进班组材料范文
2014/12/25 职场文书
党校学习个人总结
2015/02/15 职场文书
药品销售员2015年终工作总结
2015/10/22 职场文书
远程教育培训心得体会
2016/01/09 职场文书
学校趣味运动会开幕词
2016/03/04 职场文书
Python实战之用tkinter库做一个鼠标模拟点击器
2021/04/27 Python
MySQL Threads_running飙升与慢查询的相关问题解决
2021/05/08 MySQL
SpringBoot中HttpSessionListener的简单使用方式
2022/03/17 Java/Android