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+MySql编写聊天室
Oct 09 PHP
php 获得汉字拼音首字母的函数
Aug 01 PHP
Trying to clone an uncloneable object of class Imagic的解决方法
Jan 11 PHP
php.ini 配置文件的深入解析
Jun 17 PHP
PHP封装的一个支持HTML、JS、PHP重定向的多功能跳转函数
Jun 19 PHP
Codeigniter校验ip地址的方法
Mar 21 PHP
PHP基于文件存储实现缓存的方法
Jul 20 PHP
PHP内核探索:哈希表碰撞攻击原理
Jul 31 PHP
PHP的几个常用加密函数
Feb 03 PHP
laravel 5.3中自定义加密服务的方案详解
May 09 PHP
php+ajax实现无刷新文件上传功能(ajaxuploadfile)
Feb 11 PHP
基于PHP的登录和注册的功能的实现
Aug 06 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一些公用函数的集合
2008/03/27 PHP
php面向对象全攻略 (七) 继承性
2009/09/30 PHP
PHP冒泡排序算法代码详细解读
2011/07/17 PHP
Yii快速入门经典教程
2015/12/28 PHP
PHP基于单例模式实现的数据库操作基类
2016/01/15 PHP
PHP addslashes()函数讲解
2019/02/03 PHP
js tab 选项卡
2009/04/26 Javascript
Javascript(AJAX)解析XML的代码(兼容FIREFOX/IE)
2010/07/11 Javascript
javascript获取当前日期时间及其它操作函数
2011/01/11 Javascript
Jquery弹出窗口插件 LeanModal的使用方法
2012/03/10 Javascript
JS验证控制输入中英文字节长度(input、textarea等)具体实例
2013/06/21 Javascript
js获取客户端外网ip的简单实例
2013/11/21 Javascript
jQuery.extend()、jQuery.fn.extend()扩展方法示例详解
2014/05/08 Javascript
JavaScript通过代码调用Flash显示的方法
2016/02/02 Javascript
BootStrap.css 在手机端滑动时右侧出现空白的原因及解决办法
2016/06/07 Javascript
Angularjs 制作购物车功能实例代码
2016/09/14 Javascript
微信小程序教程之本地图片上传(leancloud)实例详解
2016/11/16 Javascript
JQuery查找子元素find()和遍历集合each的方法总结
2017/03/07 Javascript
nodejs中使用HTTP分块响应和定时器示例代码
2017/03/19 NodeJs
详解微信小程序支付流程与梳理
2019/07/16 Javascript
javascript实现简单打字游戏
2019/10/29 Javascript
解决python3 urllib 链接中有中文的问题
2018/07/16 Python
在python 中split()使用多符号分割的例子
2019/07/15 Python
Pytorch: 自定义网络层实例
2020/01/07 Python
python绘制封闭多边形教程
2020/02/18 Python
为什么称python为胶水语言
2020/06/16 Python
python安装读取grib库总结(推荐)
2020/06/24 Python
前端实现弹幕效果的方法总结(包含css3和canvas的实现方式)
2018/07/12 HTML / CSS
美国维生素、补充剂、保健食品购物网站:Vitacost
2016/08/05 全球购物
澳大利亚便宜隐形眼镜购买网站:QUICKLENS Australia
2018/10/06 全球购物
NET程序员上机面试题
2015/05/23 面试题
护士节演讲稿开场白
2014/08/25 职场文书
2014派出所所长群众路线对照检查材料思想汇报
2014/09/18 职场文书
四风问题对照检查材料整改措施
2014/09/27 职场文书
解决persistence.xml配置文件修改存放路径的问题
2022/02/24 Java/Android
Redis实战之Lettuce的使用技巧详解
2022/12/24 Redis