在 Ubuntu 环境下,PHP-FPM 本身其实并没有一个直接名为“速率限制”的功能开关——它不像 Nginx 的 limit_req 那样能精准控制每秒允许多少请求。但换个思路,我们可以通过“慢日志”机制来间接实现请求速率的监控与限制。这听起来有些绕,但在实际运维中非常实用,尤其适合需要 PHP-FPM 限流配置的场景。

以下是详细的配置步骤,跟着操作即可。
第一步,定位 PHP-FPM 的配置文件。通常它位于 /etc/php/版本号/fpm/pool.d/www.conf。假设你使用的是 PHP 7.4,那么完整路径就是:
/etc/php/7.4/fpm/pool.d/www.conf用编辑器打开它,比如 nano 或 vim:
sudo nano /etc/php/7.4/fpm/pool.d/www.conf第二步,在配置文件里找到下面这两行(通常默认被注释掉):
;request_slowlog_timeout = 0
;slowlog_token = "" 第三步,将 request_slowlog_timeout 设为一个正数,单位是秒。这个值的含义是:如果一个请求的运行时间超过该值,它就会被判定为“慢请求”,并记录到慢日志中。若你想通过慢日志间接实现请求限制,可以把这个值设得非常短(比如 0.2 秒)。这样一来,任何耗时超过 0.2 秒的请求都会被标记——虽然这并不会直接拒绝请求,但你可以通过监控慢日志来判断是否出现了请求过载或异常高峰:
request_slowlog_timeout = 0.2第四步,设置 slowlog_token 为一个固定的字符串,用于在日志中标识这些慢请求:
slowlog_token = "" 第五步,保存配置文件,然后重启 PHP-FPM 服务使更改生效:
sudo systemctl restart php7.4-fpm注意将 php7.4-fpm 替换为你实际使用的 PHP 版本名称。
现在,PHP-FPM 会将所有超过 0.2 秒的请求都记录到慢日志中。慢日志文件通常位于 /var/log/php7.4-fpm.log。你可以使用 tail -f 实时查看:
tail -f /var/log/php7.4-fpm.log这样,一旦请求速率过高导致处理变慢,你就能在日志里看到大量慢请求记录。你可以根据这些数据来调整 request_slowlog_timeout 的阈值,或者结合其他手段(比如 Nginx 的限流模块)做更精细的控制。
说白了,这并非一个“硬限制”,而是一个“监控+预警”方案。然而很多生产环境正是通过这种方式来判断是否该扩容或优化 PHP-FPM 性能。你可以根据自己的业务场景灵活调整参数,实现更有效的 Ubuntu 下 PHP-FPM 请求速率管理。
