Laravel项目在Ubuntu上如何优化性能
导读:Ubuntu上Laravel性能优化实操清单 一 基础环境优化 使用最新稳定版 PHP 8.2+ 与必要扩展(如:php-fpm、opcache、mbstring、xml、curl、zip、gd、pdo、mysql),Web 服务器优先...
Ubuntu上Laravel性能优化实操清单
一 基础环境优化
- 使用最新稳定版 PHP 8.2+ 与必要扩展(如:php-fpm、opcache、mbstring、xml、curl、zip、gd、pdo、mysql),Web 服务器优先 Nginx + PHP-FPM。
- 启用并正确配置 OPcache(生产建议关闭时间戳校验,变更代码后重启 FPM 或重置 OPcache):
- 关键参数示例:
- opcache.enable=1
- opcache.enable_cli=1(便于 Artisan 等 CLI 优化)
- opcache.memory_consumption=128–256
- opcache.interned_strings_buffer=16
- opcache.max_accelerated_files=10000
- opcache.validate_timestamps=0(生产)
- opcache.revalidate_freq=0(生产)
- opcache.fast_shutdown=1
- 重启服务:
sudo systemctl restart php8.2-fpm nginx - 验证:
php -i | grep opcache或public/opcache-test.php查看状态。
- 关键参数示例:
- 提升系统承载能力:
- 文件描述符:
ulimit -n查看,必要时在/etc/security/limits.conf提升 soft/hard nofile。 - TCP 参数(减少 TIME_WAIT、提升并发):
net.core.somaxconn、net.ipv4.tcp_max_syn_backlog、net.ipv4.tcp_tw_reuse、net.ipv4.tcp_fin_timeout、net.ipv4.ip_local_port_range等,修改后sysctl -p生效。
- 文件描述符:
- Web 层启用 HTTP/2 与 Gzip/Brotli 压缩,Nginx 配置静态资源长缓存(如
expires 30d; add_header Cache-Control "public")。
二 Laravel应用层优化
- 配置与路由缓存(生产):
php artisan config:cache、php artisan route:cache、php artisan view:cache、php artisan event:cache- Composer 优化:
composer dump-autoload --optimize(或-o)
- 缓存驱动与会话:使用 Redis(或 Memcached)提升命中率与并发表现:
.env:CACHE_DRIVER=redis、SESSION_DRIVER=redis- 安装与连接:Ubuntu 安装
redis-server,Laravel 安装predis/predis
- 队列异步化耗时任务:
.env:QUEUE_CONNECTION=redis- 启动:
php artisan queue:work --queue=default --sleep=3 --tries=3 - 守护:用 Supervisor 保活队列进程(见下文示例)。
- 数据库与 Eloquent:
- 为高频查询字段建立合适索引,避免 N+1:使用
with()预加载关联。 - 合理使用缓存:
Cache::remember()、页面片段缓存、查询缓存。
- 为高频查询字段建立合适索引,避免 N+1:使用
- 前端资源:Laravel Mix 执行
npm run production合并压缩;启用 CDN 加速静态资源。
三 高并发方案 Octane
- 适用场景:需要更高 QPS 与更低 RT 的 API/后台。
- 安装与启动:
- 安装扩展:
sudo pecl install swoole并启用extension=swoole.so - 集成:
composer require laravel/octane;php artisan octane:install --server=swoole - 启动示例:
php artisan octane:start --workers=$(nproc) --task-workers=2
- 安装扩展:
- 进程守护(Supervisor):
- 示例
/etc/supervisor/conf.d/octane.conf:- command=php /var/www/your-app/artisan octane:start --server=swoole --host=0.0.0.0 --port=8000
- autostart=true、autorestart=true、user=www-data、stdout/stderr 日志路径
- 执行:
sudo supervisorctl reread & & sudo supervisorctl update & & sudo supervisorctl start octane
- 示例
- 调优要点:
- workers 建议从 CPU 核心数 × 2 起步,结合内存与压测调整;设置
max_request回收长生命周期可能的内存泄漏。 - 启动时预热共享内存缓存(如配置、路由),减少首次请求开销。
- workers 建议从 CPU 核心数 × 2 起步,结合内存与压测调整;设置
四 队列与守护进程配置示例
- 安装 Supervisor:
sudo apt-get install supervisor - 队列 Worker 配置
/etc/supervisor/conf.d/laravel-worker.conf:- [program:laravel-worker]
- command=/usr/bin/php /var/www/your-app/artisan queue:work redis --queue=default --sleep=3 --tries=3 --daemon
- autostart=true、autorestart=true、user=www-data
- numprocs=2–4(按 CPU/负载调整)
- redirect_stderr=true、stdout_logfile=/var/log/laravel-worker.log
- 使配置生效:
sudo supervisorctl reread & & sudo supervisorctl update & & sudo supervisorctl start laravel-worker:* - 常用命令:
supervisorctl status、tail -f /var/log/laravel-worker.log
五 监控与持续化优化
- 性能分析:开发/预发使用 Laravel Debugbar、Blackfire 定位慢查询与 N+1;生产谨慎开启。
- OPcache 监控与重置:
- 安装:
composer require appstract/laravel-opcache - 使用:
php artisan opcache:status、php artisan opcache:optimize、php artisan opcache:reset - 安全建议:为重置接口增加鉴权或仅内网可访问。
- 安装:
- 压测与回归:上线前用 wrk 等工具进行并发压测,对比 RT、吞吐、内存 指标,逐步调优 OPcache、FPM、Octane、队列并发数。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Laravel项目在Ubuntu上如何优化性能
本文地址: https://pptw.com/jishu/771177.html
