温馨提示×

ubuntu下php-fpm怎么配置慢日志

小樊
40
2026-07-01 00:07:35
栏目: 编程语言

在 Ubuntu 下,PHP-FPM 的慢日志(slow log)用于记录执行时间超过指定阈值的 PHP 请求,非常适合排查性能问题。下面按完整步骤说明如何配置。


一、确认 PHP-FPM 版本

Ubuntu 通常同时有多个 PHP 版本,先确认你用的是哪一个:

php -v

或:

ls /etc/php/

例如:

/etc/php/8.1/
/etc/php/8.2/

下文以 PHP 8.1 为例,请根据你的版本替换。


二、编辑 PHP-FPM pool 配置

PHP-FPM 的慢日志是按 pool 配置的,常见 pool 有:

  • www(默认)
  • 或者你自定义的 pool

1️⃣ 打开配置文件

sudo vim /etc/php/8.1/fpm/pool.d/www.conf

2️⃣ 启用并设置慢日志参数

找到或添加以下配置项:

; 慢日志文件路径
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 默认运行用户)


四、重启 PHP-FPM

sudo systemctl restart php8.1-fpm

检查状态:

sudo systemctl status php8.1-fpm

五、验证慢日志是否生效

1️⃣ 故意制造慢请求

例如:

<?php
sleep(10);

访问该 PHP 页面。


2️⃣ 查看慢日志

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

它会显示:

  • 执行时间
  • 脚本路径
  • 调用栈(调用函数)

六、常见问题

❓ 为什么慢日志不生效?

检查以下几点:

  1. 是否修改的是正确的 pool
  2. request_slowlog_timeout 是否设置
  3. PHP-FPM 是否已重启
  4. PHP 是否以 FPM 模式运行

❓ 只想记录真正慢的请求?

建议设置:

request_slowlog_timeout = 2

生产环境常见值:1~5 秒。


七、不同 PHP 版本的路径总结

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,可以告诉我,我可以给你更针对的配置示例。

0