在 Ubuntu 下,PHP-FPM 的慢日志(slow log)用于记录执行时间超过指定阈值的 PHP 请求,非常适合排查性能问题。下面按完整步骤说明如何配置。
Ubuntu 通常同时有多个 PHP 版本,先确认你用的是哪一个:
php -v
或:
ls /etc/php/
例如:
/etc/php/8.1/
/etc/php/8.2/
下文以 PHP 8.1 为例,请根据你的版本替换。
PHP-FPM 的慢日志是按 pool 配置的,常见 pool 有:
www(默认)sudo vim /etc/php/8.1/fpm/pool.d/www.conf
找到或添加以下配置项:
; 慢日志文件路径
slowlog = /var/log/php8.1-fpm-slow.log
; 请求执行时间超过该值(秒)就记录
request_slowlog_timeout = 5
; 确保该选项存在(通常默认开启)
request_terminate_timeout = 0
✅ 说明:
| 配置项 | 含义 |
|---|---|
slowlog |
慢日志文件 |
request_slowlog_timeout |
超时时间(秒),超过就记录 |
request_terminate_timeout |
建议不要设置太小,否则会直接杀掉请求 |
确保 PHP-FPM 有权限写入日志文件:
sudo touch /var/log/php8.1-fpm-slow.log
sudo chown www-data:adm /var/log/php8.1-fpm-slow.log
(www-data 是 PHP-FPM 默认运行用户)
sudo systemctl restart php8.1-fpm
检查状态:
sudo systemctl status php8.1-fpm
例如:
<?php
sleep(10);
访问该 PHP 页面。
sudo tail -f /var/log/php8.1-fpm-slow.log
示例日志内容:
[16-Nov-2025 10:21:33] [pool www] pid 10432
script_filename = /var/www/html/test.php
[0x00007f3c2a1c92c0] sleep() /var/www/html/test.php:2
它会显示:
检查以下几点:
request_slowlog_timeout 是否设置建议设置:
request_slowlog_timeout = 2
生产环境常见值:1~5 秒。
| PHP 版本 | 配置文件路径 |
|---|---|
| 7.4 | /etc/php/7.4/fpm/pool.d/www.conf |
| 8.0 | /etc/php/8.0/fpm/pool.d/www.conf |
| 8.1 | /etc/php/8.1/fpm/pool.d/www.conf |
| 8.2 | /etc/php/8.2/fpm/pool.d/www.conf |
如果你使用的是 Nginx / Apache / Docker / PHP-FPM 多 pool,可以告诉我,我可以给你更针对的配置示例。