You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel Forge部署网站出现504 Gateway Timed Out问题求助

排查Laravel Forge上504超时及模型查询异常的方案

1. 优先排查模型关联与序列化逻辑

单个模型查询正常、批量查询超时,大概率是模型的关联加载或序列化环节出问题:

  • 检查User模型的$with属性,是否默认强制加载了过多关联(比如protected $with = ['posts', 'media', 'roles'];),批量查询时会触发大量N+1请求拖慢响应。
  • 查看模型自定义的访问器、toArray()/toJson()方法,是否存在递归调用、耗时的外部请求或循环引用,导致序列化过程卡死。
  • 用Laravel日志记录User::all()执行时的SQL语句,命令行执行php artisan tinker测试User::all(),观察是否有异常的查询行为。

2. 数据库层面验证

  • 直接在数据库终端执行SELECT * FROM users;,确认原生查询是否卡顿。如果数据库端本身慢,排查是否存在锁表、索引缺失、磁盘IO过高的情况。
  • 开启数据库慢查询日志,定位这条批量查询的执行瓶颈。

3. 检查PHP-FPM进程与资源配置

  • 查看PHP-FPM错误日志(路径一般为/var/log/php8.3-fpm.log),确认是否有进程崩溃、内存溢出的报错。
  • 核对pm.max_children、pm.process_idle_timeout等参数,避免因进程数不足或内存耗尽导致请求排队超时。比如服务器内存有限时,max_children设置过高会引发OOM,导致进程被系统杀死。

4. 简化场景测试

创建一个纯净的测试路由,排除业务逻辑干扰:

Route::get('/test-user-batch', function() {
    return User::all();
});

访问该路由,若依然超时,可确定问题出在模型或数据库层面;若正常,则排查原业务路由中的控制器、视图等附加逻辑。

内容的提问来源于stack exchange,提问作者Guillaume Cazin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 19:02:35