温馨提示×

Laravel在Linux服务器上如何优化性能

小樊
35
2025-12-24 06:15:44
栏目: 云计算

Linux 上 Laravel 性能优化实操清单

一 服务器与内核

  • 使用高性能 Web 服务器(如 Nginx)并正确指向 Laravel 的 public 目录;启用 HTTP/2 提升并发与资源加载速度。
  • 调整 PHP-FPM 与进程模型(如动态/静态子进程、最大子进程数、请求超时),与 Nginx 通过 Unix Socket 通信以降低开销。
  • 提升系统网络与文件描述符能力:增大 net.core.somaxconnnet.ipv4.tcp_max_syn_backlog,提高 ulimit -n(如 655360),并优化 TIME_WAIT(如开启 tcp_tw_reuse、调整 tcp_fin_timeout、扩大 ip_local_port_range)。
  • 启用 OPcache 并合理设置内存、最大加速文件数、校验频率等,显著减少 PHP 脚本编译开销。

二 PHP 与 OPcache 关键配置

  • 生产环境务必开启 opcache.enable=1,建议开启 opcache.enable_cli=1(仅限 CLI 场景需要);根据项目规模调整:
    • opcache.memory_consumption(如 128–528 MB
    • opcache.max_accelerated_files(如 10000+
    • opcache.validate_timestamps(生产建议 60 秒或关闭并用部署流程重载 FPM)
    • opcache.revalidate_freq(与 validate_timestamps 配合,生产可 060
  • 精简无用扩展,使用最新稳定版 PHP(如 PHP 8.x),并合理设置 memory_limit

三 Laravel 框架与应用层

  • 配置与路由缓存:执行 php artisan config:cachephp artisan route:cache;视图可预热 php artisan view:cache
  • 使用高性能缓存与会话驱动(如 Redis):设置 CACHE_DRIVER=redisSESSION_DRIVER=redis
  • 数据库优化:为高频查询字段建立索引;使用 Eager Loading 解决 N+1;大数据列表采用 分页;必要时使用查询缓存。
  • 将耗时任务放入队列(如 Redis 驱动)异步处理,保持接口快速响应。
  • 前端与传输:用 Laravel Mix 合并压缩 CSS/JS;启用 Gzip;静态资源使用 CDN 加速。

四 队列与异步任务

  • 选择 Redis 作为队列驱动(配置 QUEUE_CONNECTION=redis),为任务设置合理超时与重试:
    • 任务级:public $timeout = 60;public $tries = 3;public $backoff = 10;
    • 队列级:如 retry_after=90(确保长于任务最大执行时间)。
  • 进程管理:使用 Supervisor 守护队列进程,示例:
    • numprocs 依据 CPU 与负载调整(如 8);命令如:
      php artisan queue:work redis --sleep=3 --tries=3 --timeout=60
  • 可靠性:启用失败队列(如 failed_jobs 表),监控与重试失败任务;高并发/可视化监控可用 Horizon

五 监控、压测与进阶

  • 监控与分析:开发环境可用 Laravel Debugbar 定位慢查询与 N+1;生产建议接入 New Relic/Datadog 做 APM 与链路追踪。
  • 压测与容量:使用 ab/wrk/siege 进行基线压测,结合监控逐步调优 PHP-FPM 进程数OPcache数据库索引/连接池队列并发 等关键参数。
  • 进阶方案:对长生命周期进程与极低冷启动需求,可考虑 Laravel Octane(基于 Swoole/RoadRunner)进一步降低请求开销。

0