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教程-第一天
Mar 18 PHP
PHP中使用unset销毁变量并内存释放问题
Jul 05 PHP
ThinkPHP实现跨模块调用操作方法概述
Jun 20 PHP
Windows下安装PHP单元测试环境PHPUnit图文教程
Oct 24 PHP
ThinkPHP中公共函数路径和配置项路径的映射分析
Nov 22 PHP
Linux系统下PHP-FPM的安装和配置教程
Aug 17 PHP
在openSUSE42.1下编译安装PHP7 的方法
Dec 24 PHP
Zend Framework框架教程之Zend_Db_Table_Rowset用法实例分析
Mar 21 PHP
php resizeimage 部分jpg文件 生成缩略图失败的原因分析及解决办法
Mar 23 PHP
PHP如何根据文件头检测文件类型实例代码
Oct 14 PHP
Laravel中正确地返回HTTP状态码方法示例
Sep 10 PHP
浅谈laravel5.5 belongsToMany自身的正确用法
Oct 17 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中mb_convert_encoding与iconv函数的深入解析
2013/06/21 PHP
destoon切换城市后实现logo旁边显示地区名称的方法
2014/08/21 PHP
thinkphp整合微信支付代码分享
2016/11/24 PHP
javascript json2 使用方法
2010/03/16 Javascript
jQuery获取样式中的背景颜色属性值/颜色值
2012/12/17 Javascript
JQueryEasyUI datagrid框架的基本使用
2013/04/08 Javascript
JS中把字符转成ASCII值的函数示例代码
2013/11/21 Javascript
使用javascript提交form表单方法汇总
2015/06/25 Javascript
JavaScript基于原型链的继承
2016/06/22 Javascript
AngularJS基础 ng-readonly 指令简单示例
2016/08/02 Javascript
javascript实现右下角广告框效果
2017/02/01 Javascript
Web开发中客户端的跳转与服务器端的跳转的区别
2017/03/05 Javascript
微信小程序实战之仿android fragment可滑动底部导航栏(4)
2020/04/16 Javascript
用Nodejs搭建服务器访问html、css、JS等静态资源文件
2017/04/28 NodeJs
在原生不支持的旧环境中添加兼容的Object.keys实现方法
2017/09/11 Javascript
Vue2.0用户权限控制解决方案的示例
2018/02/10 Javascript
pageGroup.js实现分页功能
2019/07/27 Javascript
vue element-ui table组件动态生成表头和数据并修改单元格格式 父子组件通信
2019/08/15 Javascript
vue引入静态js文件的方法
2020/06/20 Javascript
原生js+canvas实现贪吃蛇效果
2020/08/02 Javascript
[52:07]完美世界DOTA2联赛PWL S3 LBZS vs access 第二场 12.10
2020/12/13 DOTA
Python内置模块logging用法实例分析
2018/02/12 Python
Python基础学习之时间转换函数用法详解
2019/06/18 Python
python绘制已知点的坐标的直线实例
2019/07/04 Python
在linux系统下安装python librtmp包的实现方法
2019/07/22 Python
python实现凯撒密码、凯撒加解密算法
2020/06/11 Python
Python基于Serializer实现字段验证及序列化
2020/11/04 Python
css3实现波纹特效、H5实现动态波浪效果
2018/01/31 HTML / CSS
用HTML5 Canvas API中的clearRect()方法实现橡皮擦功能
2016/03/15 HTML / CSS
HTML5中的拖放实现详解
2017/08/23 HTML / CSS
Tory Burch美国官方网站:美国时尚生活品牌
2016/08/01 全球购物
豆腐の盛田屋官网:日本自然派的豆乳面膜、肥皂、化妆水、乳液等
2016/10/08 全球购物
美国玛丽莎收藏奢华时尚商店:Marissa Collections
2016/11/21 全球购物
深圳-东方伟业笔试部分
2015/02/11 面试题
开会迟到检讨书
2014/02/03 职场文书
PHP面试题 wakeup魔法 Ezpop pop序列化与反序列化
2022/04/11 PHP