Skip to content

性能优化

本文档介绍 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 = 0

2. 索引优化

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 300

2. 连接池

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 加速
  • [ ] 设置监控告警

📚 相关文档

基于 Apache-2.0 许可发布 | 感谢 MineAdmin 提供的优秀基础框架