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的SQL注入实现(测试代码安全不错)
Feb 27 PHP
基于PHP常用字符串的总结(待续)
Jun 07 PHP
php中ftp_chdir与ftp_cdup函数用法
Nov 18 PHP
PHP比你想象的好得多
Nov 27 PHP
php插入排序法实现数组排序实例
Feb 16 PHP
php查询mysql大量数据造成内存不足的解决方法
Mar 04 PHP
php单一接口的实现方法
Jun 20 PHP
PHP中strcmp()和strcasecmp()函数字符串比较用法分析
Jan 07 PHP
PHP连接MYSQL数据库实例代码
Jan 20 PHP
Yii2增加验证码步骤详解
Apr 25 PHP
PHP Swoole异步读取、写入文件操作示例
Oct 24 PHP
Jsonp劫持学习
Apr 01 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采集神器cURL使用方法详解
2016/02/19 PHP
php使用变量动态创建类的对象用法示例
2017/02/06 PHP
ajax处理php返回json数据的实例代码
2013/01/24 Javascript
JS将光标聚焦在文本最后的实现代码
2014/03/28 Javascript
jquery实现的图片点击滚动效果
2014/04/29 Javascript
JavaScript+html5 canvas绘制的小人效果
2016/01/27 Javascript
jQueryUI 拖放排序遇到滚动条时有可能无法执行排序的小bug及解决方案
2016/12/19 Javascript
微信小程序开发之从相册获取图片 使用相机拍照 本地图片上传
2017/04/18 Javascript
vue组件讲解(is属性的用法)模板标签替换操作
2020/09/04 Javascript
[49:18]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 OG vs TNC
2018/04/01 DOTA
在Python的Django框架中编写编译函数
2015/07/20 Python
简单掌握Python的Collections模块中counter结构的用法
2016/07/07 Python
Python冒泡排序注意要点实例详解
2016/09/09 Python
python列表的增删改查实例代码
2018/01/30 Python
Python Pandas找到缺失值的位置方法
2018/04/12 Python
python实现按长宽比缩放图片
2018/06/07 Python
详解Python logging调用Logger.info方法的处理过程
2019/02/12 Python
python机器学习包mlxtend的安装和配置详解
2019/08/21 Python
解决Django layui {{}}冲突的问题
2019/08/29 Python
python多环境切换及pyenv使用过程详解
2019/09/27 Python
如何理解Python中包的引入
2020/05/29 Python
python要安装在哪个盘
2020/06/15 Python
Flask-SocketIO服务端安装及使用代码示例
2020/11/26 Python
使用HTML5 Canvas API绘制弧线的教程
2016/03/22 HTML / CSS
详解如何解决H5开发使用wx.hideMenuItems无效果不生效
2021/01/20 HTML / CSS
受外贸欢迎的美国主机:BlueHost
2017/05/16 全球购物
在使用非全零作为空指针内部表达的机器上, NULL是如何定义
2014/11/09 面试题
教师专业理论水平的自我评价分享
2013/11/09 职场文书
金融专业个人求职信范文
2013/11/28 职场文书
晚会邀请函范文
2014/01/24 职场文书
情人节寄语大全
2014/04/11 职场文书
大学生村官个人对照检查材料(群众路线)
2014/09/26 职场文书
迟到检讨书范文
2015/01/27 职场文书
2015年客房服务员工作总结
2015/05/15 职场文书
祝福语集锦:朋友新店开业祝福语
2019/12/10 职场文书
golang 接口嵌套实现复用的操作
2021/04/29 Golang