RuoYi-Cloud(若依微服务架构)由于包含多个组件(如 Nacos、Sentinel、Gateway、Auth、System 等),相比单体版对资源消耗较大。在云环境中部署,最低配置取决于你的业务规模(并发量、数据量)以及是否开启所有监控/日志组件。
以下是针对不同场景的最低配置建议及优化方案:
1. 核心结论:最低配置参考
A. 开发/测试环境(仅运行,低并发)
- 服务器规格:2 核 CPU / 4GB 内存 (2C4G)
- 操作系统:CentOS 7.9+ 或 Ubuntu 20.04+ (64位)
- JDK 版本:JDK 1.8 或 JDK 11 (推荐 11)
- 中间件:Nacos (单机模式), Redis, MySQL (5.7+)
- 适用场景:个人学习、内部演示、日活用户 < 50 人的系统。
- 风险:内存非常紧张,Nacos + Gateway + Auth + System 启动后可能占用 3.5GB+ 内存,一旦并发稍高或 GC 频繁,极易触发 OOM(内存溢出)。
B. 生产环境(最小可用,基础业务)
- 服务器规格:4 核 CPU / 8GB 内存 (4C8G)
- 适用场景:正式对外提供服务,日均 PV 在几千到几万级别。
- 优势:能为每个微服务预留足够的堆内存,避免频繁 GC 导致响应延迟,同时能支撑 Nacos 集群或较重的 Sentinel 规则加载。
2. 为什么需要这个配置?(资源拆解分析)
RuoYi-Cloud 默认启动包含以下核心组件,它们都会占用 JVM 内存:
| 组件 | 默认内存估算 (JVM Heap) | 说明 |
|---|---|---|
| Nacos | 1GB – 2GB | 注册中心与配置中心,必须常驻,且依赖 Java 运行。 |
| Redis | 512MB – 1GB | 缓存,通常单独部署或占用少量内存。 |
| MySQL | 1GB – 2GB | 数据库,若与微服务同机部署需预留足够空间。 |
| Gateway | 512MB | 网关层,负责路由和鉴权前置处理。 |
| Auth | 512MB | 认证服务,处理登录 Token。 |
| System | 512MB | 系统管理模块,含定时任务、字典等。 |
| 其他服务 | 各 512MB | 代码生成、监控、短信等可选模块。 |
| OS 开销 | ~500MB | 操作系统内核及进程开销。 |
计算逻辑:
如果所有服务都跑在一台机器上(不推荐但常见于低成本部署),加上 OS 开销,4GB 内存是物理极限,只能勉强跑通;8GB 内存才能比较从容地运行核心链路。
3. 如何在低配环境下优化部署?
如果你预算有限,只能使用 2C4G 甚至更低配置的云服务器,可以通过以下手段“压榨”性能:
① 精简服务(最关键)
不要启动所有微服务。RuoYi-Cloud 支持按需启动。
- 操作:只启动
ruoyi-auth(认证),ruoyi-gateway(网关),ruoyi-system(系统),ruoyi-monitor(监控)。 - 移除:暂时关闭
ruoyi-quartz(定时任务可改为手动或简化)、ruoyi-demo(示例业务)、ruoyi-sms(短信) 等非核心服务。 - 效果:内存占用可减少 30%-40%。
② 调整 JVM 参数
修改启动脚本中的 -Xms 和 -Xmx 参数,强制降低单实例内存上限。
# 示例:将默认 2g 调整为 512m 或 768m
java -Xms512m -Xmx512m ...
注意:Nacos 建议至少保留 1GB,否则容易崩溃;其他业务服务可适当调小。
③ 分离关键组件
如果必须上云,建议将 数据库 (MySQL) 和 缓存 (Redis) 使用云厂商提供的 PaaS 服务(如阿里云 RDS、Redis 版),而不是部署在应用服务器上。
- 好处:节省服务器内存给 Java 进程,且数据库性能更稳定。
- 结果:应用服务器只需关注微服务,2C4G 即可承载轻量级业务。
④ 开启 Docker 容器化部署
使用 Docker Compose 编排时,可以精确控制每个容器的 mem_limit。
例如在 docker-compose.yml 中限制:
services:
ruoyi-system:
mem_limit: 512m
ruoyi-auth:
mem_limit: 512m
4. 总结与建议
| 部署阶段 | 推荐配置 | 备注 |
|---|---|---|
| 本地开发 | 4C8G (本地 PC) | 确保流畅调试,避免频繁重启。 |
| 测试环境 | 2C4G | 仅开启核心服务,关闭非必要日志输出。 |
| 生产环境 (起步) | 4C8G | 强烈推荐。保证稳定性,避免线上故障。 |
| 生产环境 (极限) | 2C4G + 云数据库 | 必须拆分数据库到云 PaaS,并精简微服务数量。 |
最终建议:
如果是正式项目上线,请至少选择 4C8G 的配置。虽然初期成本略高,但可以避免因内存不足导致的频繁宕机、GC 停顿和服务不可用问题,运维成本远低于修复故障的时间成本。如果预算实在紧张,请务必将 MySQL 和 Redis 迁移至云厂商的独立实例。
云知道CLOUD