Laravel运行异常缓慢求助:极简页面及轻查询加载耗时过长
排查Laravel全页面加载缓慢的思路
这种不管是空页面还是简单查询页面都慢的情况,基本可以排除是业务逻辑复杂导致的,大概率是环境配置或者框架基础启动环节出了问题,给你列几个按优先级排序的排查方向:
先排查服务器基础性能
先确认是不是服务器本身的问题:- 在服务器本地用命令
time curl http://你的测速页面地址测响应时间,如果本地都慢,那和外部网络无关,聚焦服务器或项目配置。 - 用
top或htop查看CPU、内存使用率,有没有其他进程(比如后台任务、其他服务)占用了大量资源。如果是本地开发环境,看看是不是开了太多IDE、容器之类的程序。
- 在服务器本地用命令
检查Laravel缓存配置
框架启动时的文件解析开销是空白页面慢的常见原因,试试开启Laravel的各类缓存:- 运行
php artisan config:cache缓存配置文件 - 运行
php artisan route:cache缓存路由 - 运行
php artisan view:cache缓存视图文件
这些操作能大幅减少框架启动时的文件IO和解析时间,尤其是空白页面,效果会很明显。
- 运行
验证数据库连接开销
哪怕查询数据量极小,数据库连接慢也会拖慢整个请求:- 可以在你的测速页面里临时加一行简单的数据库查询,比如
DB::select('select 1'),然后看页面加载时间有没有大幅增加。如果有,说明数据库连接环节有问题。 - 检查
.env里的DB_HOST,如果是本地数据库,试试把localhost改成127.0.0.1,有时候socket连接会比TCP连接慢;如果是远程数据库,那延迟高是正常的,建议把数据库迁到和应用服务器同区域。 - 查看
storage/logs/laravel.log里有没有数据库连接超时或者慢查询的日志。
- 可以在你的测速页面里临时加一行简单的数据库查询,比如
排查中间件的耗时操作
你提到带中间件的页面更慢,试试临时移除中间件,看速度有没有提升:- 逐个禁用中间件,定位是不是某个中间件里做了耗时操作(比如不必要的外部API请求、循环查询、日志写入等)。
- 可以用Laravel的Debugbar或者Clockwork扩展,直观看到请求生命周期里每个环节的耗时,包括中间件、路由解析、数据库查询、视图渲染等部分,能快速定位瓶颈。
确认PHP OPcache是否开启
OPcache对PHP脚本的执行速度影响极大,如果没开启,PHP每次都会重新解析编译脚本:- 用
php -i | grep opcache查看OPcache状态,确认opcache.enable和opcache.enable_cli都是On。 - 如果没开启,修改
php.ini里的配置,开启OPcache并设置合理的缓存参数,比如opcache.memory_consumption=128、opcache.max_accelerated_files=10000。
- 用
检查调试模式的影响
虽然调试模式本身开销不算特别大,但如果.env里APP_DEBUG=true,可以临时改成false试试,看速度有没有提升。不过这个一般不会导致这么大的延迟,优先级可以靠后。
内容的提问来源于stack exchange,提问作者prgrm
相关产品推荐
相关产品推荐

