Ubuntu下Laravel项目如何优化
导读:Ubuntu下Laravel项目优化实战清单 一 基础环境优化 启用并正确配置 OPcache(生产建议关闭时间戳检查): 安装:sudo apt-get install php-opcache 配置 php.ini(示例值可按内存调优...
Ubuntu下Laravel项目优化实战清单
一 基础环境优化
- 启用并正确配置 OPcache(生产建议关闭时间戳检查):
- 安装:
sudo apt-get install php-opcache - 配置 php.ini(示例值可按内存调优):
opcache.enable=1opcache.memory_consumption=256opcache.max_accelerated_files=10000opcache.validate_timestamps=0(生产环境建议关闭,代码发布后执行php-fpm重载)opcache.revalidate_freq=60
- 安装:
- 使用 PHP-FPM + Nginx(优于 mod_php/Apache 的并发与内存表现):
- 安装:
sudo apt install php-fpm nginx - Nginx 站点根目录指向 public,PHP 请求转发到 php-fpm.sock,示例:
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
- 进程池建议:按内存与 CPU 选择 static/dynamic,并设定
pm.max_requests=500~1000防止内存泄漏累积。
- 安装:
二 应用层缓存与队列
- 配置 Redis(高性能缓存/会话/队列后端):
- 安装:
sudo apt update & & sudo apt install redis-server - .env:
REDIS_HOST=127.0.0.1,REDIS_PORT=6379,REDIS_PASSWORD=null - Composer:
composer require predis/predis
- 安装:
- 缓存策略与用法:
- 数据缓存:
Cache::remember('key', 60, fn() => Model::all()); - 页面缓存:控制器
Cache::remember('home', 3600, fn() => view('home'));;Blade@cache('home') ... @endcache - 驱动配置:
.env设置CACHE_DRIVER=redis,SESSION_DRIVER=redis
- 数据缓存:
- 队列异步化耗时任务:
- 队列连接(config/queue.php):
'driver' => 'redis', 'retry_after' => 90 - 任务:
php artisan make:job SendEmail;分发:SendEmail::dispatch($user); - 常驻消费:
php artisan queue:work --daemon(生产建议使用 Supervisor 托管)
- 队列连接(config/queue.php):
三 部署与构建优化
- 生产环境基线:
.env设置APP_ENV=production、APP_DEBUG=false- 依赖安装:
composer install --optimize-autoloader --no-dev - 生成密钥:
php artisan key:generate - 目录权限:
chmod -R 755 storage bootstrap/cache,chown -R www-data:www-data storage bootstrap/cache
- Laravel 优化命令(发布后执行):
php artisan config:cachephp artisan route:cachephp artisan view:cachecomposer dump-autoload --optimize
- 前端与静态资源:
- 资源构建:
npm run production(Laravel Mix) - 传输与网络:启用 HTTP/2、开启 Gzip、接入 CDN 加速静态资源。
- 资源构建:
四 数据库与查询优化
- 索引与查询:为高频查询字段建立合适索引,避免全表扫描;在 Eloquent 中使用 预加载 解决 N+1 问题(如
with('relation'))。 - 分页与只取所需字段:列表页使用 分页,查询时仅选择需要的列,减少 IO 与内存占用。
- 缓存查询结果:对命中稳定且计算/IO 成本高的数据使用 Cache::remember 等策略,降低数据库压力。
五 高并发与系统层面调优
- 进程与并发:结合 PHP-FPM 的
pm.max_children、pm.start_servers、pm.min_spare_servers、pm.max_spare_servers与业务内存预算进行压测调优;必要时采用 Laravel Octane(Swoole/RoadRunner)提升吞吐。 - 文件句柄与网络参数(示例,按实际压测微调):
- 句柄数:
ulimit -n 655360,并在/etc/security/limits.conf设置* soft/hard nofile 655360 - TCP 优化(/etc/sysctl.conf):
net.ipv4.tcp_syncookies=1net.ipv4.tcp_tw_reuse=1net.ipv4.tcp_fin_timeout=30net.ipv4.ip_local_port_range=10240 60999net.ipv4.tcp_keepalive_time=1200net.ipv4.tcp_max_syn_backlog=8192net.ipv4.tcp_max_tw_buckets=5000- 执行
sysctl -p使参数生效
- 句柄数:
- 监控与定位:开发/预发环境接入 Laravel Debugbar、Blackfire 等工具定位慢查询与瓶颈,再在生产用更轻量的日志/指标方案观测。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu下Laravel项目如何优化
本文地址: https://pptw.com/jishu/789040.html
