当前位置:

首页 > 编程开发 > 如何在Linux上优化PHP-FPM的连接数

如何在Linux上优化PHP-FPM的连接数

在Linux优化PHP-FPM连接数需调整进程池参数。推荐动态模式,据内存计算max_children,设置空闲进程数,用max_requests防内存泄漏,调大listen.backlog应对高并发,设request_terminate_timeout超时。调参后持续监控。

在Linux上优化PHP-FPM的连接数,本质上就是在调整进程池的管理策略。很多新手一上来就照着网上的配置抄,结果要么服务器扛不住,要么资源严重浪费。今天把这几个核心参数拆开讲清楚,你自然就知道怎么调了。

如何在Linux上优化PHP-FPM的连接数

1. 编辑PHP-FPM配置文件

配置文件的位置,常见的有两个:/etc/php/版本号/fpm/pool.d/www.conf 或 /etc/php-fpm.d/www.conf。打开它,里面藏着所有调优的关键。

sudo nano /etc/php/7.4/fpm/pool.d/www.conf

2. 调整连接数参数

这部分是重点,一个个来说透。

pm 参数

pm 决定了PHP-FPM怎么管理进程池。三种模式:dynamic(动态)、static(静态)、ondemand(按需)。对于绝大多数业务场景,dynamic 是最稳妥的选择——它能根据负载自动伸缩,既不浪费资源,也不至于突然崩溃。

pm = dynamic

pm.max_children

这个值决定了池子里最多能同时跑多少个子进程。设太小,高峰期排队;设太大,内存直接爆掉。经验法则是根据单进程内存消耗来算:如果每个PHP进程平均吃掉50MB,服务器可用内存4GB,那么 max_children 控制在80以内比较安全。

pm.max_children = 50

pm.start_servers

启动时立即创建的子进程数。对于低流量站点,设小一点(比如5)足够;如果流量波动大,可以适当提高,避免刚启动就频繁创建进程。

pm.start_servers = 5

pm.min_spare_servers

保持最小的空闲进程数。空闲太少,请求一来就得现创建,响应会变慢。通常建议和 start_servers 保持一致,或者略低。

pm.min_spare_servers = 5

pm.max_spare_servers

最大空闲进程数。空闲太多就是在浪费内存,尤其是在低流量时段。这个值要根据实际负载曲线来调,一般设为 max_children 的70%左右比较合理。

pm.max_spare_servers = 35

pm.max_requests

每个子进程在处理完指定数量的请求后就会被重启,这是防止内存泄漏的有效手段。500次是个不错的起点,如果应用逻辑比较复杂,可以降到200;如果是稳定且测试充分的代码,设到1000甚至更高也没问题。

pm.max_requests = 500

3. 调整监听队列大小

listen.backlog 控制的是TCP连接队列的长度。当所有子进程都在忙时,新的连接会排在这个队列里。默认值往往偏小,导致连接被内核直接丢弃。对于高并发场景,建议手动调大。

listen.backlog = 65535

4. 调整超时设置

request_terminate_timeout 用来兜底——防止某个请求卡死,导致子进程被永远占用。设置为 0 意味着无限制,这有风险;建议根据你的应用最大执行时间,设一个合理的值,比如30秒或60秒。

request_terminate_timeout = 0

5. 重启PHP-FPM服务

配置文件改完,要让它生效。用下面的命令重启服务:

sudo systemctl restart php7.4-fpm

注意版本号要对应你自己的环境。

6. 监控和调整

调参不是一次性的事。上线后要用工具持续观察——top、htop 看CPU和内存,php-fpm status 看进程池状态。如果发现空闲进程数经常触到 max_spare_servers 上限,说明你给的空闲太富裕了,可以降低一点;如果 max_children 很快就用完,说明瓶颈在PHP处理能力上,可能需要考虑升级机器或优化代码。

sudo systemctl status php7.4-fpm

说到底,优化没有银弹,但搞清楚每个参数的含义和它们之间的联动关系,你就能针对自己的业务做出精准调整。配好后,服务器会感谢你的。

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
作者最新文章
编程开发 Linux
相关文章 更多
linux删除用户与用户组的方法及命令教程
linux删除用户与用户组的方法及命令教程

掌握Linux中删除用户和用户组的正确方法,避免残留文件和进程冲突。本文深入解析userdel和groupdel命令的参数用法,提供处理“用户仍在使用”等常见错误的实战方案。

Linux如何开启端口号?开放端口命令详解
Linux如何开启端口号?开放端口命令详解

详细讲解Linux如何开启端口号以及常用的开放端口命令。

crossover卸载软件下载及重新安装教程
crossover卸载软件下载及重新安装教程

遇到CrossOver运行错误或需要更新版本时,如何彻底卸载旧版并干净重装?本教程详解macOS和Linux下的卸载步骤、残留文件清理方法及官方下载渠道,确保软件环境纯净稳定。

查看更多
精品专题 更多
装机必备
装机必备

正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

Windows
Windows

正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

PDF教程
PDF教程

正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

Mac软件 更多
IntelliJ IDEA macOS版
IntelliJ IDEA macOS版
Mac

IntelliJ IDEA 是 JetBrains 推出的专业集成开发环境,重点服务于 Java、Kotlin 与 JVM 项目开发。软件集成代码补全、静态检查、重构、调试、测试、版本控制及构建工具,并可借助插件扩展语言和框架支持。

PyCharm macOS版
PyCharm macOS版
Mac

JetBrains PyCharm 是面向 Python 开发者的集成开发环境,提供智能补全、代码检查、重构、调试、测试、版本控制及虚拟环境管理功能。Mac 版兼容 Intel 与 Apple 芯片,核心功能可免费使用。

WebStorm macOS版
WebStorm macOS版
Mac

JetBrains WebStorm 是面向 JavaScript、TypeScript 和现代 Web 技术的专业集成开发环境,可智能理解项目结构,提供代码补全、重构、错误检查、运行调试、测试及 Git 工具。

WINDOWS 更多
IntelliJ IDEA Windows版
IntelliJ IDEA Windows版
Windows

JetBrains IntelliJ IDEA 是以 Java、Kotlin 和 JVM 项目为核心的专业集成开发环境,提供智能补全、代码检查、安全重构、调试、测试、版本控制及构建工具集成。统一发行版的核心功能可免费用于商业和非商业项目,

PhpStorm Windows版
PhpStorm Windows版
Windows

PhpStorm 是 JetBrains 面向 PHP 与现代 Web 开发打造的专业集成开发环境,提供代码补全、静态检查、重构、调试、测试、数据库、版本控制及前端语言支持。Windows 用户可直接下载安装程序,

PyCharm Windows版
PyCharm Windows版
Windows

PyCharm 是 JetBrains 推出的 Python 集成开发环境,提供智能代码补全、错误检查、重构、调试、测试、Git、终端及 Jupyter Notebook 支持。统一版安装后可体验 30 天 Pro 功能,