在高并发场景下,Java项目的服务器配置需要综合考虑MySQL、Redis和Nginx的协同工作。以下是详细的配置建议:
一、MySQL服务器配置
硬件配置
- CPU:8-16核以上,主频建议3.0GHz+
- 内存:32-128GB(根据数据量调整)
- 存储:NVMe SSD,RAID 10配置
- 网络:万兆网卡
关键配置优化
# my.cnf 关键配置
[mysqld]
# 连接配置
max_connections = 2000
thread_cache_size = 100
back_log = 500
# InnoDB优化
innodb_buffer_pool_size = 内存的70-80%
innodb_log_file_size = 2-4GB
innodb_flush_log_at_trx_commit = 2 # 平衡性能与安全
innodb_flush_method = O_DIRECT
# 查询缓存(MySQL 8.0+已移除,使用外部缓存)
query_cache_type = 0
# 其他优化
table_open_cache = 2000
tmp_table_size = 256M
max_heap_table_size = 256M
架构建议
- 读写分离:主库写,多个从库读
- 分库分表:使用ShardingSphere或MyCat
- 连接池:使用HikariCP,合理配置连接数
二、Redis服务器配置
硬件配置
- CPU:4-8核(Redis单线程,但需要多核处理持久化等)
- 内存:根据缓存数据量×1.5配置
- 存储:SSD用于AOF/RDB持久化
- 网络:万兆网卡
关键配置
# redis.conf
# 内存管理
maxmemory 32gb
maxmemory-policy allkeys-lru
# 持久化策略
appendonly yes
appendfsync everysec # 平衡性能与数据安全
# 连接配置
maxclients 10000
tcp-backlog 511
# 性能优化
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 512mb 128mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
集群架构
- Redis Cluster:自动分片,高可用
- 哨兵模式:主从+哨兵监控
- 多实例部署:单机多实例充分利用CPU
三、Nginx服务器配置
硬件配置
- CPU:4-8核(Nginx多进程模型)
- 内存:8-16GB
- 网络:万兆网卡,多队列优化
关键配置
# nginx.conf
worker_processes auto; # 自动匹配CPU核心数
worker_cpu_affinity auto;
worker_rlimit_nofile 65535;
events {
worker_connections 65535;
use epoll;
multi_accept on;
}
http {
# 连接优化
keepalive_timeout 65;
keepalive_requests 1000;
# 缓冲区优化
client_body_buffer_size 16k;
client_max_body_size 8m;
# 反向XX优化
proxy_buffer_size 64k;
proxy_buffers 4 64k;
proxy_busy_buffers_size 128k;
# 启用gzip
gzip on;
gzip_min_length 1k;
gzip_comp_level 4;
}
负载均衡策略
upstream backend {
# 最少连接数策略
least_conn;
server 192.168.1.101:8080 weight=5 max_fails=3 fail_timeout=30s;
server 192.168.1.102:8080 weight=5 max_fails=3 fail_timeout=30s;
keepalive 32; # 连接池
}
四、整体架构建议
1. 容量规划
预估公式:
- 并发用户数 × 每个请求处理时间 = 所需连接数
- QPS × 平均响应时间 = 并发线程数
- 数据量 × 增长率 × 保留周期 = 存储需求
2. 监控指标
- MySQL:QPS、TPS、连接数、慢查询、锁等待
- Redis:命中率、内存使用、网络流量、连接数
- Nginx:活跃连接、请求率、响应时间、错误率
3. 高可用方案
推荐架构:
客户端 → CDN → Nginx集群 → 应用集群 → Redis集群 → MySQL集群
↓ ↓ ↓ ↓ ↓
缓存静态 负载均衡 服务发现 哨兵监控 主从复制+MHA
4. 配置检查清单
- [ ] 所有服务都有监控告警
- [ ] 配置了连接池和超时设置
- [ ] 开启了慢查询日志
- [ ] 有完善的备份策略
- [ ] 进行了压力测试验证
- [ ] 设置了合理的限流熔断
五、云服务推荐配置
AWS示例
- MySQL:RDS db.m5.4xlarge(16vCPU, 64GB)
- Redis:ElastiCache cache.r6g.2xlarge(8vCPU, 52GB)
- Nginx:EC2 c5.2xlarge(8vCPU, 16GB)+ ELB
阿里云示例
- MySQL:PolarDB 16核64GB
- Redis:Tair 8核32GB集群版
- Nginx:ECS g6.2xlarge + SLB
六、调优建议
- 先监控后调优:使用Prometheus+Grafana监控
- 渐进式优化:每次只调整1-2个参数
- 压力测试:使用JMeter/wrk进行基准测试
- 关注瓶颈转移:优化一个组件可能暴露其他瓶颈
关键原则:没有"最好"的配置,只有"最适合"的配置。根据实际业务场景、数据特性和预算,结合监控数据进行持续调优。建议先从小规模开始,根据监控指标逐步升级配置。
CLOUD技术笔记