温馨提示×

怎样解决ubuntu php-fpm超时

小樊
38
2026-09-28 13:50:03
栏目: 编程语言

在 Ubuntu 上 PHP-FPM 请求超时 通常表现为:

  • 页面 504 Gateway Timeout
  • Nginx/Apache 报错 upstream timed out
  • PHP 脚本执行时间长被中断

下面按 常见原因 → 对应解决方法 说明。


一、先确认是哪里超时

1️⃣ Nginx + PHP-FPM 常见超时链路

浏览器 → Nginx → PHP-FPM → PHP 脚本

超时可能发生在:

  • Nginx 等待 PHP-FPM
  • PHP-FPM 等待 PHP 执行
  • PHP 内部 max_execution_time

二、Nginx 超时设置(最常见)

编辑站点配置:

sudo nano /etc/nginx/sites-available/default

在 location ~ \.php$ 或 server 块中加入:

fastcgi_read_timeout 300;
proxy_read_timeout 300;
client_body_timeout 300;
client_header_timeout 300;
send_timeout 300;

重启 Nginx:

sudo systemctl restart nginx

✅ 适合:导出、报表、批量处理等慢请求


三、PHP-FPM 超时设置

1️⃣ 修改 PHP-FPM 配置

找到你的 PHP 版本(如 8.1):

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

调整以下参数:

request_terminate_timeout = 300s
request_slowlog_timeout = 10s
slowlog = /var/log/php-fpm-slow.log

重启 PHP-FPM:

sudo systemctl restart php8.1-fpm

四、PHP 本身执行时间限制

1️⃣ php.ini

sudo nano /etc/php/8.1/fpm/php.ini

修改:

max_execution_time = 300
max_input_time = 300
memory_limit = 512M

重启 PHP-FPM。


2️⃣ 代码中临时修改(不推荐长期使用)

set_time_limit(300);
ini_set('max_execution_time', 300);

五、Apache + PHP-FPM(如适用)

如果是 Apache:

sudo nano /etc/apache2/mods-enabled/fcgid.conf

增加:

FcgidIOTimeout 300
FcgidConnectTimeout 300

重启 Apache:

sudo systemctl restart apache2

六、排查是否真的“慢”

查看 PHP-FPM 慢日志

tail -f /var/log/php-fpm-slow.log

查看 Nginx 错误

tail -f /var/log/nginx/error.log

七、最佳实践建议

✅ 不要盲目调大超时
✅ 耗时任务用:

  • 队列(Redis / RabbitMQ)
  • cron
  • 后台脚本(php artisan queue:work 等)

✅ Web 请求尽量 < 30s


八、常见组合示例(推荐)

Nginx + PHP-FPM

fastcgi_read_timeout 120;
request_terminate_timeout = 120s
max_execution_time = 120

如果你愿意,可以告诉我:

  • Ubuntu 版本
  • PHP 版本
  • Nginx / Apache
  • 具体报错信息

我可以给你精确配置。

0 踩