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脚本的10个技巧(2)
Oct 09 PHP
php中0,null,empty,空,false,字符串关系的详细介绍
Jun 20 PHP
PHP实现的MongoDB数据库操作类分享
May 12 PHP
php中的ini配置原理详解
Oct 14 PHP
php生成固定长度纯数字编码的方法
Jul 09 PHP
PHP邮件群发机实现代码
Feb 16 PHP
Zend Framework教程之Loader以及PluginLoader用法详解
Mar 09 PHP
php简单统计中文个数的方法
Sep 30 PHP
php实现的简单中文验证码功能示例
Jan 03 PHP
PHP实现从上往下打印二叉树的方法
Jan 18 PHP
php高性能日志系统 seaslog 的安装与使用方法分析
Feb 29 PHP
PHP实现rar解压读取扩展包小结
Jun 03 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
Zend studio for eclipse中使php可以调用mysql相关函数的设置方法
2008/10/13 PHP
thinkphp ajaxfileupload实现异步上传图片的示例
2017/08/28 PHP
PHP实现基于图的深度优先遍历输出1,2,3...n的全排列功能
2017/11/10 PHP
PHP中关于php.ini参数优化详解
2020/02/28 PHP
JavaScript中的私有成员
2006/09/18 Javascript
两个DIV等高的JS的实现代码
2007/12/23 Javascript
Javascript 去除数组的重复元素
2010/05/04 Javascript
快速排序 php与javascript的不同之处
2011/02/22 Javascript
在IE浏览器中resize事件执行多次的解决方法
2011/07/12 Javascript
javascript实现五星评分功能
2015/11/10 Javascript
深入浅析search 搜索框的写法
2016/08/02 Javascript
通过jquery实现页面的动画效果(实例代码)
2016/09/18 Javascript
AngularJS验证信息框架的封装插件用法【w5cValidator扩展插件】
2016/11/03 Javascript
echarts3 使用总结(绘制各种图表,地图)
2017/01/05 Javascript
nodejs+websocket实时聊天系统改进版
2017/05/18 NodeJs
SVG实现时钟效果
2018/07/17 Javascript
Phaser.js实现简单的跑酷游戏附源码下载
2018/10/26 Javascript
layui实现数据表格点击搜索功能
2020/03/26 Javascript
使用Promise封装小程序wx.request的实现方法
2019/11/13 Javascript
element-ui tooltip修改背景颜色和箭头颜色的实现
2019/12/16 Javascript
浅谈Vue2.4.0 $attrs与inheritAttrs的具体使用
2020/03/08 Javascript
js点击事件的执行过程实例分析【冒泡与捕获】
2020/04/11 Javascript
Node.js API详解之 tty功能与用法实例分析
2020/04/27 Javascript
JavaScript实现滚动加载更多
2020/12/27 Javascript
js面向对象方式实现拖拽效果
2021/03/03 Javascript
Django1.7+python 2.78+pycharm配置mysql数据库教程
2014/11/18 Python
深入理解Python中的元类(metaclass)
2015/02/14 Python
Python利用ORM控制MongoDB(MongoEngine)的步骤全纪录
2018/09/13 Python
sklearn中的交叉验证的实现(Cross-Validation)
2021/02/22 Python
html标签之Object和EMBED标签详解
2013/07/04 HTML / CSS
红色旅游心得体会
2014/09/03 职场文书
2014年扶贫工作总结
2014/11/18 职场文书
有关水浒传的读书笔记
2015/06/25 职场文书
用Python实现Newton插值法
2021/04/17 Python
MySQL 查询速度慢的原因
2021/05/25 MySQL
排查并解决MySQL生产库内存使用率高的报警
2022/04/11 MySQL