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 需要掌握的东西 不做浮躁的人
Dec 28 PHP
PHP $_FILES函数详解
Mar 09 PHP
PHP APC缓存配置、使用详解
Mar 06 PHP
PHP中实现Bloom Filter算法
Mar 30 PHP
PHP实现HTTP断点续传的方法
Jun 17 PHP
php获取图片信息的方法详解
Dec 10 PHP
Zend Framework教程之连接数据库并执行增删查的方法(附demo源码下载)
Mar 21 PHP
php实现的mysqldb读写分离操作类示例
Feb 07 PHP
CentOS 上搭建 PHP7 开发测试环境
Feb 26 PHP
Laravel框架中VerifyCsrfToken报错问题的解决
Aug 30 PHP
YII2框架中behavior行为的理解与使用方法示例
Mar 13 PHP
php 利用socket发送GET,POST请求的实例代码
Jul 04 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
DOTA2 探索永无止境 玩家自创强悍插眼攻略
2020/04/20 DOTA
php下的权限算法的实现
2007/04/28 PHP
php中time()和mktime()方法的区别
2013/09/28 PHP
ThinkPHP CURD方法之where方法详解
2014/06/18 PHP
php中执行系统命令的方法
2015/03/21 PHP
php利用云片网实现短信验证码功能的示例代码
2017/11/18 PHP
js压缩工具 yuicompressor 使用教程
2010/03/31 Javascript
基于jquery的lazy loader插件实现图片的延迟加载[简单使用]
2011/05/07 Javascript
jquery的冒泡事件的阻止与允许(三种实现方法)
2013/02/01 Javascript
jquery实现类似EasyUI的页面布局可改变左右的宽度
2020/09/12 Javascript
js遍历子节点子元素附属性及方法
2014/08/19 Javascript
JS实现日期时间动态显示的方法
2015/12/07 Javascript
jQuery代码实现表格中点击相应行变色功能
2016/05/09 Javascript
js实现精确到秒的倒计时效果
2016/05/29 Javascript
轻松实现js选项卡切换效果
2016/09/24 Javascript
jquery 判断div show的状态实例
2016/12/03 Javascript
详解vue过滤器在v2.0版本用法
2017/06/01 Javascript
JavaScript之事件委托实例(附原生js和jQuery代码)
2017/07/22 jQuery
详解JavaScript修改注册表的方法
2020/01/05 Javascript
vue 实现根据data中的属性值来设置不同的样式
2020/08/04 Javascript
[10:18]2018DOTA2国际邀请赛寻真——Fnatic能否笑到最后?
2018/08/14 DOTA
Python 获取新浪微博的最新公共微博实例分享
2014/07/03 Python
python爬虫中get和post方法介绍以及cookie作用
2018/02/08 Python
Python 中的pygame安装与配置教程详解
2020/02/10 Python
Python实现FTP文件定时自动下载的步骤
2020/12/19 Python
很酷的HTML5电子书翻页动画特效
2016/02/25 HTML / CSS
美国大码时尚女装购物网站:ELOQUII
2017/12/28 全球购物
英国异国风情旅游网站:Travel Talk Tours(团体旅游、探险旅游、帆船假期)
2018/07/26 全球购物
《和田的维吾尔》教学反思
2014/04/14 职场文书
教师批评与自我批评(群众路线)
2014/10/15 职场文书
故意杀人罪辩护词
2015/05/21 职场文书
村党总支部公开承诺书2016
2016/03/25 职场文书
毕业生就业推荐表自我鉴定
2019/06/20 职场文书
webpack的移动端适配方案小结
2021/07/25 Javascript
日元符号 ¥
2022/02/17 杂记
不同品牌、不同型号对讲机如何互相通联
2022/02/18 无线电