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中实现进程间通讯
Oct 09 PHP
PHP基础学习之流程控制的实现分析
Apr 28 PHP
php获取qq用户昵称和在线状态(实例分析)
Oct 27 PHP
保存到桌面、设为桌面且带图标的PHP代码
Nov 19 PHP
thinkphp四种url访问方式详解
Nov 28 PHP
php使用pdo连接mssql server数据库实例
Dec 25 PHP
浅析php静态方法与非静态方法的用法区别
May 17 PHP
php有效防止图片盗用、盗链的两种方法
Nov 01 PHP
php die()与exit()的区别实例详解
Dec 03 PHP
php修改数组键名的方法示例
Apr 15 PHP
laravel 实现用户登录注销并限制功能
Oct 24 PHP
PHP dirname功能及原理实例解析
Oct 28 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
腾讯QQ php程序员面试题目整理
2010/06/08 PHP
PHP静态调用非静态方法的应用分析
2013/05/02 PHP
php使用cookie保存用户登录的用户名实例
2015/01/26 PHP
php生成图片验证码-附五种验证码
2015/08/19 PHP
js操作Xml(向服务器发送Xml,处理服务器返回的Xml)(IE下有效)
2009/01/30 Javascript
用nodejs实现PHP的print_r函数代码
2014/03/14 NodeJs
jquery加载图片时以淡入方式显示的方法
2015/01/14 Javascript
JQuery节点元素属性操作方法
2015/06/11 Javascript
js+CSS实现模拟华丽的select控件下拉菜单效果
2015/09/01 Javascript
解析浏览器端的AJAX缓存机制
2016/06/21 Javascript
jQuery特殊符号转义的实现
2016/11/30 Javascript
js 判断数据类型的几种方法
2017/01/13 Javascript
bootstrap实现二级下拉菜单效果
2017/11/23 Javascript
js中document.write和document.writeln的区别
2018/03/11 Javascript
setTimeout时间设置为0详细解析
2018/03/13 Javascript
小程序ios音频播放没声音问题的解决
2018/07/11 Javascript
详解在网页上通过JS实现文本的语音朗读
2019/03/28 Javascript
windows 10下安装搭建django1.10.3和Apache2.4的方法
2017/04/05 Python
简单了解python中的f.b.u.r函数
2019/11/02 Python
jupyter notebook 实现matplotlib图动态刷新
2020/04/22 Python
Python如何用wx模块创建文本编辑器
2020/06/07 Python
俄罗斯的精英皮具:Wittchen
2018/01/29 全球购物
Charles&Keith美国官方网站:新加坡快时尚鞋类和配饰零售商
2019/11/27 全球购物
护士自荐信范文
2013/12/15 职场文书
ktv收银员岗位职责
2013/12/16 职场文书
英语演讲稿范文
2014/01/03 职场文书
清洁工表扬信
2014/01/08 职场文书
宿舍保安职务说明书
2014/02/25 职场文书
研究生简历自我评价范文
2014/09/13 职场文书
2015年初中生自我评价范文
2015/03/03 职场文书
校运会新闻稿
2015/07/17 职场文书
压缩Redis里的字符串大对象操作
2021/06/23 Redis
Python+Tkinter制作专属图形化界面
2022/04/01 Python
如何用六步教会你使用python爬虫爬取数据
2022/04/06 Python
未发现nvidia显卡怎么办?Win11系统中未检测到nvidia显卡解决教程
2022/04/08 数码科技
Spring中的@Transactional的工作原理
2022/06/05 Java/Android