PHP-FPM 配置 & 优化

PHP-FPM 是用于管理 PHP 进程池的软件,用于接收和处理 Web 服务器的请求。
PHP-FPM 会创建一个主进程,控制何时以及如何把 HTTP 请求转发给一个或多个子进程处理。
PHP-FPM 的配置很重要,可以参考 PHP手册相应的内容
1

全局配置

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-FPM 没有固定的配置,要根据实际情况设置。

参考:
1、php-fpm的max_chindren的一些误区


小码农的打怪
打怪升级中~~
5.4k 声望
176 粉丝
0 条评论
推荐阅读
GVM - Go 的多版本管理工具,使用介绍
原文作者: dryyun原文链接: [链接] 基本介绍 项目地址 Go GitHub GVM GitHub 本机环境 设备 MacBook Pro 系统 macOS High Sierra 10.13.6 多版本管理使用场景 在 Mac 上使用 brew install go 真的很简单,一个命...

dryyun7阅读 10.7k

怎样用 PHP 来实现枚举?
在数学和计算机科学理论中,一个集的枚举是列出某些有穷序列集的所有成员的程序,或者是一种特定类型对象的计数。这两种类型经常(但不总是)重叠。枚举是一个被命名的整型常数的集合,枚举在日常生活中很常见,...

唯一丶25阅读 6.4k评论 4

PHP转Go实践:xjson解析神器「开源工具集」
我和劲仔都是PHP转Go,身边越来越多做PHP的朋友也逐渐在用Go进行重构,重构过程中,会发现php的json解析操作(系列化与反序列化)是真的香,弱类型语言的各种隐式类型转换,很大程度的减低了程序的复杂度。

王中阳Go10阅读 2k评论 3

封面图
图片防盗链破解 解决图片防盗链问题 反向代理
当客户端(浏览器)向服务器请求内容的时候,会提交一个header,这个header中包含了如:浏览器信息、cookie等内容,那么有一个叫referer的东东,也包含在这里面。

TANKING7阅读 11.3k评论 5

Git操作不规范,战友提刀来相见!
年终奖都没了,还要扣我绩效,门都没有,哈哈。这波骚Git操作我也是第一次用,担心闪了腰,所以不仅做了备份,也做了笔记,分享给大家。问题描述小A和我在同时开发一个功能模块,他在优化之前的代码逻辑,我在开...

王中阳Go5阅读 2.3k评论 2

封面图
Hyperf 3.0 发布,PHP 新时代
在过去的一年半时间里,Hyperf 2.2 共发布了 35 个小版本,使 Hyperf 达到了一个前所未有的高度,这里也获得了一些不错的数据反馈。

huangzhhui4阅读 1.1k评论 1

封面图
微信公众号开发:自动回复文本/图片/图文消息/关键词回复/上传素材/自定义菜单
对接流程1、申请微信公众号测试账号URL:[链接]2、登录,配置开发者服务器URL和Token开发者服务器配置代码:config.php {代码...} URL是config.php在你服务器的URLToken是上面代码自己设置的Token搞定之后,就能完...

TANKING2阅读 10.1k

5.4k 声望
176 粉丝
宣传栏