Appearance
性能优化
本文档介绍 MineShop 的性能优化策略和最佳实践。
🎯 优化方向
┌─────────────────────────────────────────────────────────────┐
│ 性能优化 │
├─────────────────────────────────────────────────────────────┤
│ 应用层优化 │ 数据库优化 │ 缓存优化 │
├─────────────────────────────────────────────────────────────┤
│ 服务器优化 │ 网络优化 │ 监控调优 │
└─────────────────────────────────────────────────────────────┘🚀 应用层优化
1. Swoole 配置
php
// config/autoload/server.php
return [
'settings' => [
'worker_num' => swoole_cpu_num() * 2,
'max_request' => 100000,
'max_coroutine' => 100000,
'open_tcp_nodelay' => true,
'socket_buffer_size' => 2 * 1024 * 1024,
],
];2. 连接池配置
php
// config/autoload/databases.php
return [
'default' => [
'pool' => [
'min_connections' => 10,
'max_connections' => 100,
'connect_timeout' => 10.0,
'wait_timeout' => 3.0,
'max_idle_time' => 60.0,
],
],
];3. OPcache 配置
ini
opcache.enable=1
opcache.memory_consumption=256
opcache.max_accelerated_files=20000
opcache.validate_timestamps=0
opcache.jit_buffer_size=100M💾 数据库优化
1. MySQL 配置
ini
# my.cnf
[mysqld]
innodb_buffer_pool_size = 4G
innodb_log_file_size = 256M
innodb_flush_log_at_trx_commit = 2
innodb_flush_method = O_DIRECT
max_connections = 500
query_cache_type = 02. 索引优化
sql
-- 常用查询添加索引
CREATE INDEX idx_order_member ON orders(member_id, status);
CREATE INDEX idx_order_created ON orders(created_at);
CREATE INDEX idx_product_category ON products(category_id, status);3. 慢查询分析
ini
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 1🔴 Redis 优化
1. 配置优化
conf
maxmemory 2gb
maxmemory-policy allkeys-lru
tcp-keepalive 3002. 连接池
php
// config/autoload/redis.php
return [
'default' => [
'pool' => [
'min_connections' => 10,
'max_connections' => 50,
],
],
];🌐 Nginx 优化
nginx
worker_processes auto;
worker_connections 65535;
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
gzip on;
gzip_types text/plain application/json application/javascript;
# 静态资源缓存
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires 30d;
add_header Cache-Control "public, immutable";
}
}📊 监控指标
| 指标 | 正常范围 | 告警阈值 |
|---|---|---|
| CPU 使用率 | < 70% | > 85% |
| 内存使用率 | < 80% | > 90% |
| 请求响应时间 | < 100ms | > 500ms |
| 数据库连接数 | < 80% | > 90% |
| Redis 内存 | < 80% | > 90% |
✅ 优化清单
- [ ] 启用 OPcache
- [ ] 配置连接池
- [ ] 优化数据库索引
- [ ] 启用 Redis 缓存
- [ ] 配置 Nginx 缓存
- [ ] 启用 Gzip 压缩
- [ ] 配置 CDN 加速
- [ ] 设置监控告警