RuoYi-Cloud 是基于 Spring Cloud 微服务架构的解决方案,包含多个服务模块(如 ruoyi-auth、ruoyi-system、ruoyi-job、nacos、sentinel、gateway 等),相比单体版的 RuoYi-Vue,它对内存和 CPU 的要求显著更高。
以下是针对不同场景的服务器最低配置建议:
1. 核心结论:最低推荐配置
如果你是在开发环境或生产环境的小规模测试中运行,为了保证服务能正常启动且不过度卡顿,最低建议配置如下:
- CPU: 2 核 (vCPU)
- 内存: 4 GB (RAM)
- 磁盘: 40 GB SSD (系统盘 + 数据盘)
- 操作系统: Linux (CentOS 7.9 / Ubuntu 20.04+ 推荐)
注意:如果低于此配置(例如 1 核 2G),虽然理论上可以勉强启动所有容器,但极易出现 OOM (Out Of Memory) 导致服务频繁重启,或者数据库连接池耗尽,无法稳定运行。
2. 详细资源分析
A. 内存压力来源 (最关键瓶颈)
RuoYi-Cloud 默认使用 Docker Compose 部署时,主要消耗内存的服务包括:
- Nacos: 作为注册中心和配置中心,Java 进程本身占用较大,建议分配 512MB – 1GB。
- MySQL: 即使使用轻量级配置,也至少需要 256MB – 512MB。
- Redis: 约 50MB – 100MB。
- Sentinel Dashboard: 约 100MB – 200MB。
- 各个微服务实例 (
system,auth,gateway,job等): 每个 Spring Boot 应用启动后通常占用 200MB – 400MB。
计算逻辑:
若开启所有默认服务,基础开销约为:
$512(MB, Nacos) + 512(MB, MySQL) + 200(MB, Redis/Sentinel) + 3 times 300(MB, 3 个核心服务) approx 2.2GB$
加上操作系统内核开销和 JVM 堆外内存,4GB 内存是安全运行的底线。
B. CPU 要求
微服务之间涉及大量的网络调用和序列化/反序列化操作。
- 1 核 CPU: 仅适合单机调试单个服务,多服务并发时响应极慢,甚至超时。
- 2 核 CPU: 满足基本的 CRUD 操作和定时任务执行。
- 4 核及以上: 推荐用于正式生产环境,以应对高并发请求。
3. 不同场景的配置建议表
| 场景 | CPU | 内存 | 说明 |
|---|---|---|---|
| 本地开发/学习 | 2 核 | 4 GB | 必须保证不 OOM,否则无法调试。 |
| 生产环境 (低流量) | 2 核 | 4 GB | 仅限内部工具或极低访问量,需优化 JVM 参数。 |
| 生产环境 (标准) | 4 核 | 8 GB | 推荐起步配置,可支撑一定并发的业务系统。 |
| 生产环境 (高可用) | 4 核 x2 | 8 GB x2 | 建议将 Nacos、MySQL 独立部署,微服务节点拆分。 |
4. 优化与避坑指南
如果你的服务器配置确实受限(例如只有 2G 内存),可以通过以下手段尝试运行:
- 精简服务:
- 不要一次性启动所有服务。先只启动
nacos+mysql+redis+system。 - 关闭非核心组件(如 Sentinel Dashboard、SkyWalking 探针等)。
- 不要一次性启动所有服务。先只启动
- 调整 JVM 参数:
- 在
docker-compose.yml或启动脚本中,限制各服务的最大堆内存。 - 例如:
JAVA_OPTS="-Xms256m -Xmx512m",防止单个 Java 进程吃光内存。
- 在
- 使用轻量级中间件:
- 如果使用 Docker 部署,确保镜像版本选择合适(避免过大的 JDK 版本,可选用
alpine基础镜像的 JDK 版本,但需注意兼容性)。 - 如果是生产环境,建议将 MySQL 和 Nacos 从容器中剥离,部署在独立的物理机或云数据库上,以节省容器内内存。
- 如果使用 Docker 部署,确保镜像版本选择合适(避免过大的 JDK 版本,可选用
- 关闭监控组件:
- 默认配置下可能开启了 Prometheus/Grafana 监控,这些组件非常吃内存,测试时可暂时关闭。
总结
对于 RuoYi-Cloud,2 核 4G 是能够“跑起来”的绝对最低门槛,但为了系统的稳定性和可维护性,强烈建议生产环境至少使用 4 核 8G 的云服务器。如果预算有限,可以先采用“单体版 (RuoYi-Vue)"进行开发验证,待业务成熟后再迁移至微服务架构。
CLOUD技术博