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防CC攻击实现代码
Dec 29 PHP
php 短链接算法收集与分析
Dec 30 PHP
php获取新浪微博数据API实例
Nov 12 PHP
PHP捕获Fatal error错误的方法
Jun 11 PHP
ajax+php控制所有后台函数调用
Jul 15 PHP
学习php设计模式 php实现适配器模式
Dec 07 PHP
Symfony2针对输入时间进行查询的方法分析
Jun 28 PHP
PHP实现字符串翻转功能的方法【递归与循环算法】
Nov 03 PHP
php+ajax实现商品对比功能示例
Apr 13 PHP
php实现大文件断点续传下载实例代码
Oct 01 PHP
Laravel框架实现抢红包功能示例
Oct 31 PHP
tp5.1 框架路由操作-URL生成实例分析
May 26 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原理之异常机制深入分析
2010/08/08 PHP
jquery实现导航固定顶部的效果仿蘑菇街
2014/10/22 Javascript
JS创建对象几种不同方法详解
2016/03/01 Javascript
jQuery实现鼠标选中文字后弹出提示窗口效果【附demo源码】
2016/09/05 Javascript
BootStrap中Table分页插件使用详解
2016/10/09 Javascript
JQuery学习总结【一】
2016/12/01 Javascript
ECMAScript6 新特性范例大全
2017/03/24 Javascript
Angular.Js中ng-include指令的使用与实现
2017/05/07 Javascript
JavaScript设计模式之策略模式详解
2017/06/09 Javascript
jQuery实现简单的计时器功能实例分析
2017/08/29 jQuery
NodeJS简单实现WebSocket功能示例
2018/02/10 NodeJs
webpack4的迁移的使用方法
2018/05/25 Javascript
JS执行控制之节流模式实例分析
2018/12/21 Javascript
微信小程序 WXML节点信息查询详解
2019/07/29 Javascript
js new Date()实例测试
2019/10/31 Javascript
微信小程序分享小程序码的生成(带参数)以及参数的获取
2020/03/25 Javascript
[01:02:48]2018DOTA2亚洲邀请赛小组赛 A组加赛 Newbee vs Liquid
2018/04/03 DOTA
[47:18]完美世界DOTA2联赛循环赛 IO vs FTD BO2第一场 11.05
2020/11/06 DOTA
Python使用PyGreSQL操作PostgreSQL数据库教程
2014/07/30 Python
python3 破解 geetest(极验)的滑块验证码功能
2018/02/24 Python
Python判断中文字符串是否相等的实例
2018/07/06 Python
python保存网页图片到本地的方法
2018/07/24 Python
pycharm执行python时,填写参数的方法
2018/10/29 Python
Python3 安装PyQt5及exe打包图文教程
2019/01/08 Python
Python变量类型知识点总结
2019/02/18 Python
Draper James官网:知名演员瑞茜·威瑟斯彭所创品牌
2017/10/25 全球购物
美国汽车零部件和配件网站:CarParts
2019/03/13 全球购物
德国珠宝和手表在线商店:VALMANO
2019/03/24 全球购物
Ticketmaster意大利:音乐会、节日、艺术和剧院的官方门票
2019/12/23 全球购物
陈欧的广告词
2014/03/18 职场文书
会计电算化实训报告
2014/11/04 职场文书
2014年党风廉政工作总结
2014/12/03 职场文书
2015年秋季灭鼠工作总结
2015/07/27 职场文书
劳保用品管理制度范本
2015/08/06 职场文书
JavaScript原始值与包装对象的详细介绍
2021/05/11 Javascript
Python机器学习之基础概述
2021/05/19 Python