在 Ubuntu 下配置 PHP-FPM 慢日志(slow log),通常用于排查执行较慢的 PHP 请求。下面是完整的配置步骤。
PHP-FPM 通常使用 pool(池) 配置,常见位置:
/etc/php/8.1/fpm/pool.d/www.conf
版本号可能是
7.4、8.0、8.2等,根据你安装的版本调整。
打开配置文件:
sudo nano /etc/php/8.1/fpm/pool.d/www.conf
找到或添加以下配置项:
; 请求执行超过该时间(秒)就记录慢日志
request_slowlog_timeout = 5s
; 慢日志文件路径
slowlog = /var/log/php-fpm/slow.log
说明:
5s 表示脚本执行超过 5 秒就记录1s、2ssudo mkdir -p /var/log/php-fpm
sudo chown -R www-data:adm /var/log/php-fpm
sudo systemctl restart php8.1-fpm
确认状态:
sudo systemctl status php8.1-fpm
创建一个测试脚本:
<?php
sleep(10);
echo "done";
访问该脚本后查看日志:
sudo tail -f /var/log/php-fpm/slow.log
示例输出:
[pool www] pid 12345
script_filename = /var/www/html/test.php
[0x00007f...] sleep() /var/www/html/test.php:3
; 记录完整的 PHP 调用栈
request_slowlog_trace_depth = 20
; 请求超时直接杀掉(防止卡死)
request_terminate_timeout = 30s
创建 logrotate 配置:
sudo nano /etc/logrotate.d/php-fpm-slow
内容:
/var/log/php-fpm/slow.log {
weekly
missingok
rotate 4
compress
delaycompress
notifempty
create 0640 www-data adm
}
如果你使用的是 Nginx + PHP-FPM 或 Docker 环境,我也可以给你对应的配置示例。