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 相关文章推荐
提问的智慧
Oct 09 PHP
不错的PHP学习之php4与php5之间会穿梭一点点感悟
May 03 PHP
phpmyadmin 3.4 空密码登录的实现方法
May 29 PHP
php继承的一个应用
Sep 06 PHP
通过缓存数据库结果提高PHP性能的原理介绍
Sep 05 PHP
PHP中的命名空间相关概念浅析
Jan 22 PHP
用php来限制每个ip每天浏览页面数量的实现思路
Feb 24 PHP
PHP自定义多进制的方法
Nov 03 PHP
PHP生成唯一ID之SnowFlake算法
Dec 17 PHP
PHP读取CSV大文件导入数据库的实例
Jul 24 PHP
弹出模态框modal的实现方法及实例
Sep 19 PHP
PHP的垃圾回收机制代码实例讲解
Feb 27 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
Symfony2之session与cookie用法小结
2016/03/18 PHP
PHP实现带进度条的Ajax文件上传功能示例
2019/07/02 PHP
JavaScript中的其他对象
2008/01/16 Javascript
javascript 硬盘序列号+其它硬件信息
2008/12/23 Javascript
Nodejs实现的一个静态服务器实例
2014/12/06 NodeJs
JS函数this的用法实例分析
2015/02/05 Javascript
JavaScript截取指定长度字符串点击可以展开全部代码
2015/12/04 Javascript
写给小白的JavaScript引擎指南
2015/12/04 Javascript
使用JS轻松实现ionic调用键盘搜索功能(超实用)
2016/09/06 Javascript
jQuery简单实现列表隐藏和显示效果示例
2016/09/12 Javascript
AngularJS中过滤器的使用与自定义实例代码
2016/09/17 Javascript
浅析如何利用angular结合translate为项目实现国际化
2016/12/08 Javascript
Angular.js跨controller实现参数传递的两种方法
2017/02/20 Javascript
vue.js国际化 vue-i18n插件的使用详解
2017/07/07 Javascript
React Router V4使用指南(精讲)
2018/09/17 Javascript
vue改变对象或数组时的刷新机制的方法总结
2019/04/24 Javascript
javascript实现遮罩层动态效果实例
2019/05/14 Javascript
解决vue下载后台传过来的乱码流的问题
2020/12/05 Vue.js
Python开发的实用计算器完整实例
2017/05/10 Python
python之virtualenv的简单使用方法(必看篇)
2017/11/25 Python
python Celery定时任务的示例
2018/03/13 Python
Numpy数组的保存与读取方法
2018/04/04 Python
Python3中的tuple函数知识点讲解
2021/01/03 Python
adidas爱尔兰官方网站:阿迪达斯运动鞋和运动服
2019/11/01 全球购物
类成员函数的重载、覆盖和隐藏区别
2016/01/27 面试题
人事行政主管岗位职责
2013/12/22 职场文书
教师年度考核自我鉴定
2014/01/19 职场文书
2014年医学生毕业自我鉴定
2014/03/26 职场文书
终止合同协议书
2014/04/17 职场文书
院党委组织查摆问题对照检查材料思想汇报2014
2014/10/08 职场文书
工作检讨书500字
2014/10/19 职场文书
中班教师个人总结
2015/02/05 职场文书
安徽导游词
2015/02/12 职场文书
大学生入党自传2015
2015/06/26 职场文书
Python 数据可视化之Seaborn详解
2021/11/02 Python
python 判断文件或文件夹是否存在
2022/03/18 Python