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

Laravel应用中Artisan命令与路由响应异常缓慢的排查求助

Laravel生产环境卡顿排查建议

系统资源实时监控

  • 执行top或htop,重点观察:
    • CPU占用:是否有单个/多个进程长期占满CPU核心
    • 内存与Swap:Swap使用率是否过高(>50%),内存是否耗尽触发OOM killer
    • 磁盘IO:%CPU列的wa值是否长期高于20%(表示磁盘等待严重)
  • 用iostat -x 1查看磁盘读写详情,确认%util是否接近100%,排查磁盘瓶颈或异常读写操作
  • 执行ss -tulpn检查网络连接,查看是否有大量TIME_WAIT连接堆积,或异常端口占用

PHP-FPM进程排查

  • 查看PHP-FPM状态页(需提前配置),检查active processes是否达到pm.max_children上限,queue请求数是否过高
  • 查看PHP-FPM日志(默认路径:/var/log/php-fpm/),排查是否有进程崩溃、内存溢出、超时等报错
  • 临时调整PHP-FPM参数:适当提高pm.max_children(按内存计算,建议每个进程预留50-100MB内存),降低pm.process_idle_timeout,测试是否缓解卡顿(生产环境调整前需备份配置)

Laravel应用深层排查

  • 临时开启Laravel debug日志:修改.env中LOG_LEVEL=debug,查看storage/logs/laravel.log,定位请求执行中耗时最长的环节(如慢查询、外部API调用、队列阻塞)
  • 测试Artisan基础命令耗时:执行php artisan route:list或php artisan tinker执行简单DB查询,对比正常耗时,排查Artisan本身是否异常
  • 检查队列任务堆积:执行php artisan queue:monitor(或数据库队列直接查jobs表),若队列堆积,优先处理阻塞任务或临时扩容队列进程
  • 排查定时任务:查看Cron配置(crontab -l),确认是否有批量数据处理、备份等任务在高峰期执行,占用系统资源
  • 确认APP_DEBUG是否关闭:生产环境开启debug会大幅增加IO和CPU消耗,必须设置为false
  • 验证缓存驱动状态:若使用Redis/Memcached,执行php artisan cache:clear后测试缓存读写,或临时切换为文件缓存(CACHE_DRIVER=file)排查缓存服务问题

文件系统与权限排查

  • 执行df -h检查磁盘剩余空间,确认120GB存储是否剩余不足(剩余<10%可能导致写入阻塞)
  • 检查Laravel存储目录权限:确保storage/、bootstrap/cache/目录权限为755,所属用户与Web/PHP进程一致
  • 清理大日志文件:若laravel.log或系统日志超过1GB,备份后清空,避免大文件读写拖慢进程

RDS数据库深层排查

  • 查看RDS慢查询日志:排查是否有新增的无索引查询、大表全表扫描等慢SQL,及时优化或添加索引
  • 查看RDS监控指标:确认CPU、内存、连接数是否达到实例上限,是否有突发的连接高峰
  • 测试EC2到RDS的网络延迟:执行ping <RDS_ENDPOINT>或traceroute <RDS_ENDPOINT>,确认延迟是否突然升高(正常应<50ms)

其他应急排查点

  • 滚动重启PHP-FPM与Web服务器:执行systemctl reload php-fpm、systemctl reload nginx,避免进程僵死导致的卡顿
  • 检查EC2系统更新:查看/var/log/yum.log或/var/log/apt/history.log,确认是否有自动系统更新占用资源
  • 排查恶意进程:执行ps aux --sort=-%cpu,查看是否有陌生进程长期占用CPU(如挖矿程序)
  • 负载均衡环境检查:若使用ELB,确认是否有单个EC2节点负载过高,临时移除异常节点测试

内容的提问来源于stack exchange,提问作者Mohanned Zbeda

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 23:58:34