性能优化
随着规模增长,让 FeedbackPulse SaaS 运行更快的优化建议。
快速提升
1. 缓存配置
php artisan config:cache # 缓存 .env 和配置文件
php artisan route:cache # 缓存路由
php artisan view:cache # 预编译 Blade 视图
每次部署后都需运行这些命令,使用
php artisan optimize:clear清除缓存。
2. 使用 Redis 作为缓存和 Session
Redis 明显快于文件或数据库缓存:
sudo apt install redis-server php8.4-redis
CACHE_STORE=redis
SESSION_DRIVER=redis
QUEUE_CONNECTION=redis
3. 使用数据库队列(最低要求)
QUEUE_CONNECTION=database
通过 Supervisor 运行队列工作进程,在后台处理任务而非内联处理。
4. 启用 OPcache
; /etc/php/8.4/fpm/conf.d/10-opcache.ini
opcache.enable=1
opcache.memory_consumption=256
opcache.max_accelerated_files=20000
opcache.validate_timestamps=0 ; 生产 环境中禁用
数据库优化
添加索引
FeedbackPulse 已附带适当的索引,但如果您运行大型查询,可以验证:
-- 检查慢查询
SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 2;
MySQL 调优
innodb_buffer_pool_size = 1G # 可用内存的 50-70%
innodb_log_file_size = 256M
max_connections = 200
innodb_flush_log_at_trx_commit = 2 # 轻微的持久性权衡换取速度
Web 服务器优化
Nginx:启用 Gzip
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml;
gzip_min_length 256;
gzip_vary on;
静态文件缓存
location ~* \.(jpg|jpeg|png|gif|ico|css|js|svg|woff|woff2)$ {
expires 30d;
add_header Cache-Control "public, immutable";
}
PHP-FPM 调优
pm = dynamic
pm.max_children = 20 # 根据内存调整
pm.start_servers = 5
pm.min_spare_servers = 3
pm.max_spare_servers = 10
pm.max_requests = 500 # 防止内存泄漏
扩展建议
| 租户数量 | 推荐配置 |
|---|---|
| 1-50 | 单台 VPS,文件缓存,同步队列 |
| 50-200 | 单台 VPS,Redis 缓存,数据库队列 + Supervisor |
| 200-1000 | 独立服务器,Redis 缓存+队列,MySQL 调优 |
| 1000+ | 负载均衡器,独立 DB 服务器,Redis 集群,多个队列工作进程 |
监控
# 检查 PHP-FPM 状态
sudo systemctl status php8.4-fpm
# 检查 MySQL 进程列表
mysqladmin processlist
# 检查磁盘空间
df -h
# 检查内存使用
free -m
# 检查 Laravel 日志中的错误
tail -f storage/logs/laravel.log