RuoYi-Cloud 是基于 Spring Cloud Alibaba 的微服务架构,其资源消耗主要取决于业务复杂度、并发量以及中间件(Nacos, Redis, MySQL, RabbitMQ/Kafka)的部署方式。
以下是针对不同规模生产环境的服务器配置建议,分为 单机部署(轻量级)、标准分布式部署(推荐) 和 高可用集群部署 三种场景。
一、核心原则:组件分离 vs 单机混合
在决定配置前,请先明确你的部署策略:
- 单机混合部署:所有服务(网关、认证、业务模块、Nacos、MySQL、Redis)都跑在一台或两台服务器上。仅适合测试或小微型项目。
- 分布式部署(推荐):数据库、缓存、消息队列独立部署;微服务应用层根据负载水平扩展。这是生产环境的主流做法。
以下建议基于 分布式部署 的前提。
二、场景化配置推荐
场景 1:小型项目 / 内部管理系统 / 低并发
适用情况:用户数 < 500,日活 < 1000,功能模块较少(如简单的 OA、CRM)。
策略:尽量复用服务器,减少运维成本。
| 组件 | 推荐配置 | 说明 |
|---|---|---|
| 应用服务器 (App) | 4核 8G × 2 台 | 一台做 Nginx + Gateway + Auth,另一台跑其他业务模块。若内存紧张,可合并到一台 8C16G。 |
| 数据库 (MySQL) | 4核 8G × 1 台 | 使用主从复制(Master-Slave)。若无高可用需求,单实例即可。 |
| 缓存 (Redis) | 2核 4G × 1 哨兵/集群 | 建议单独部署,避免与应用争抢 CPU/内存。 |
| 注册中心 (Nacos) | 2核 4G × 2 台 | 必须双节点保证可用性,共享同一存储(MySQL)。 |
| 消息队列 | 2核 4G × 1 台 | 若使用 RabbitMQ,单节点足够;若用 RocketMQ,需 NameServer + Broker 分离。 |
- 总预算:约 3~4 台中等配置服务器。
- 注意:此方案中,如果某台应用服务器宕机,部分功能可能不可用,但数据库和缓存仍存活。
场景 2:中型项目 / 公开互联网产品 / 中等并发
适用情况:用户数 1k~1w,日活 1k~5k,有较高性能要求,需要一定的高可用性。
策略:关键组件独立部署,应用层可弹性伸缩。
| 组件 | 推荐配置 | 说明 |
|---|---|---|
| 负载均衡 (Nginx) | 2核 4G × 2 台 | 做 Keepalived 高可用,或使用云厂商 SLB。 |
| 应用服务器 (App) | 4核 8G × 3+ 台 | 至少 3 个节点组成集群,支持滚动更新和故障转移。可根据 CPU 利用率动态扩容。 |
| 数据库 (MySQL) | 8核 16G × 2 台 | 主从架构,建议使用 MGR 或 ProxySQL 实现读写分离。数据盘建议 SSD。 |
| 缓存 (Redis) | 4核 8G × 3 台 | Redis Cluster 集群模式,保证高可用和数据分片。 |
| 注册中心 (Nacos) | 4核 8G × 3 台 | 三节点集群,持久化到 MySQL。 |
| 消息队列 | 4核 8G × 2 台 | RabbitMQ 集群或 RocketMQ 多 Broker 部署。 |
- 总预算:约 8~10 台服务器。
- 优势:单点故障不影响整体服务,具备自动扩缩容能力。
场景 3:大型项目 / 高并发 / X_X级要求
适用情况:用户数 > 1w,日活 > 1w,对稳定性、安全性、响应速度要求极高。
策略:全链路高可用,资源隔离,监控完善。
| 组件 | 推荐配置 | 说明 |
|---|---|---|
| 负载均衡 | 云厂商 SLB / F5 | 不建议自建 Nginx 集群,直接使用云服务。 |
| 应用服务器 (App) | 8核 16G × N 台 | 按业务模块拆分(如订单服务、用户服务独立集群),容器化部署(K8s/Docker Swarm)。 |
| 数据库 (MySQL) | 16核 32G+ × 2 主 + 多从 | 使用 Percona XtraDB Cluster 或云数据库 RDS。备份策略完善。 |
| 缓存 (Redis) | 8核 16G × 6+ 台 | Redis Cluster 高可用,配合 Sentinel 监控。 |
| 注册中心 (Nacos) | 8核 16G × 3 台 | 企业级配置,外部 MySQL 集群支撑。 |
| 监控体系 | 4核 8G × 2 台 | Prometheus + Grafana + ELK (日志收集)。 |
- 总预算:15 台以上,或采用云原生架构(ECS + RDS + Redis + K8s)。
三、关键组件配置细节与优化建议
1. Java 应用 JVM 参数调优
RuoYi-Cloud 各模块默认 JVM 参数可能不适合生产环境,务必调整:
# 示例:针对 4C8G 服务器
-Xms4g -Xmx4g # 堆内存设为物理内存的一半左右
-XX:MetaspaceSize=256m # 元空间初始大小
-XX:MaxMetaspaceSize=512m
-XX:+UseG1GC # 使用 G1 垃圾回收器
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/opt/java/dumps
注意:每个微服务实例的堆内存不应超过服务器总内存的 1/3,预留空间给 OS 和其他进程。
2. Nacos 配置
- 持久化:生产环境必须将 Nacos 配置存储在 MySQL 中,而非默认的 Derby。
- 集群模式:至少 3 节点,确保选举机制正常。
- JVM 优化:Nacos 本身也吃内存,建议单独分配 4G+ 堆内存。
3. MySQL 优化
- 字符集:统一使用
utf8mb4。 - 连接池:HikariCP 是默认选择,确保最大连接数合理(如 20~50)。
- 慢查询日志:开启并定期分析。
- 备份:每日全备 + 每小时增量 binlog。
4. Redis 优化
- 持久化:开启 AOF + RDB,防止数据丢失。
- 内存淘汰策略:设置
maxmemory-policy allkeys-lru。 - 大 Key 处理:避免存储超大 Value,影响网络带宽和阻塞线程。
四、云服务器 vs 物理机
| 维度 | 云服务器 (阿里云/AWS/腾讯云) | 物理机/虚拟机 (IDC) |
|---|---|---|
| 优点 | 弹性伸缩、内置 SLB/DB/Redis、免运维硬件、安全组防护 | 性能稳定、无虚拟化损耗、长期成本低(大规模时) |
| 缺点 | 单位算力成本高、依赖网络延迟 | 运维复杂、故障恢复慢、初期投入大 |
| 建议 | 绝大多数中小企业首选,尤其是初创期和成长期。 | 超大型企业或特殊行业(如X_X内网)考虑。 |
五、总结与建议
- 起步阶段:不要过度设计。先用 2~3 台 4C8G 服务器跑通流程,采用“应用+数据库”混合部署,后续再拆分。
- 增长阶段:当 QPS 超过 100 或用户反馈变慢时,立即将 MySQL、Redis、Nacos 剥离到独立服务器。
- 监控先行:无论配置如何,务必部署 Prometheus + Grafana 监控 CPU、内存、JVM、数据库连接池等指标,做到“先观测,后优化”。
- 文档参考:
- RuoYi-Cloud 官方文档
- Spring Cloud Alibaba 官方最佳实践
最终建议:对于大多数使用 RuoYi-Cloud 的企业,“3 台 4C8G 应用服务器 + 1 台 8C16G MySQL + 1 台 4C8G Redis + 1 台 4C8G Nacos” 是一个性价比极高且具备基本高可用的生产起点。
轻量云Cloud