若依(RuoYi)微服务版(通常指 RuoYi-Cloud 或 RuoYi-Cloud-Vue)是一个基于 Spring Cloud Alibaba 的完整架构,包含 Nacos、Sentinel、Gateway、Auth、System 等核心组件,再加上业务依赖的 Redis、MySQL 和 Nginx。
要确定“最低”硬件要求,我们需要区分开发/测试环境和生产环境。在开发或学习阶段,为了节省资源,可以极度压缩配置;但在生产环境,为了保证高可用和稳定性,建议的配置会更高。
以下是针对单机部署(所有服务跑在一台机器上)场景的详细分析:
1. 核心组件资源消耗分析
- JVM (Java 应用):
- 若依微服务包含多个独立的 Java 进程(如
ruoyi-auth,ruoyi-system,ruoyi-gateway等)。 - 每个服务默认 JVM 堆内存通常在 256MB – 512MB 之间。如果有 5-8 个核心服务,仅 Java 进程就需要 2GB – 4GB 内存。
- CPU 方面,Spring Cloud 组件启动和运行需要一定的计算能力,尤其是网关(Gateway)和认证中心(Auth)。
- 若依微服务包含多个独立的 Java 进程(如
- Nacos (注册中心/配置中心):
- 这是最吃资源的组件之一。它本身是 Java 应用,且内置了 Derby 数据库(生产建议配 MySQL),或者使用外部 MySQL。
- 如果配合外部 MySQL,Nacos + MySQL 组合至少需要 1GB – 1.5GB 内存。
- Redis:
- 轻量级,占用内存较小。用于缓存 Session、字典数据等。
- 最低 256MB 即可,推荐 512MB。
- MySQL:
- 存储业务数据。InnoDB 引擎对内存有一定要求。
- 最低 512MB,推荐 1GB。
- Nginx:
- 极轻量,几乎不占资源,50MB 以内足够。
- 操作系统开销:
- Linux 系统自身运行需要预留 512MB – 1GB 内存。
2. 最低硬件要求建议
场景 A:开发/测试/学习环境(极限压缩)
在此场景下,你可以接受服务启动慢、偶尔 OOM(内存溢出)、无法进行高并发压测。
- CPU:2 核
- 理由:Java 多进程并发启动时,单核处理不过来会导致超时或启动失败。
- 内存 (RAM):4 GB
- 理由:这是临界值。
- OS: 512MB
- Java 进程 (约 5-6 个): 2.5GB (每个 400MB)
- MySQL: 512MB
- Redis: 256MB
- Nacos: 512MB
- 总计:约 4.3GB,刚好卡线。如果开启 Swap(交换分区)并设置较小的 JVM 参数(如
-Xms256m -Xmx512m),可以在 4GB 内存上勉强跑通。
- 理由:这是临界值。
- 硬盘:40 GB SSD
- 理由:Docker 镜像层、日志文件、数据库数据量初期不大,但 SSD 能显著提升启动速度。机械硬盘会导致启动时间过长甚至超时。
结论:开发环境最低 2 核 4G。
场景 B:生产环境(稳定运行)
在此场景下,必须考虑服务重启时的资源抢占、GC 停顿以及突发流量。
- CPU:4 核
- 理由:微服务链路长,请求经过 Gateway -> Auth -> System 等多个节点,4 核能保证 CPU 利用率在 70% 以下,避免频繁上下文切换。
- 内存 (RAM):8 GB
- 理由:
- 为每个 Java 服务分配 512MB – 1GB 堆内存更稳妥。
- MySQL 缓冲池(innodb_buffer_pool_size)可设置为 2G-3G,提升查询性能。
- 防止因内存不足导致频繁 GC 或服务崩溃。
- 理由:
- 硬盘:80 GB+ SSD
- 理由:生产环境日志量大,且需要保留备份空间。SSD 是必须的,因为数据库 I/O 瓶颈是主要性能杀手。
结论:生产环境建议 4 核 8G。
3. 关键优化与调整建议
如果你必须在低配机器(如 2 核 4G)上运行,必须进行以下调整:
- 修改 JVM 参数:
在application.yml或启动脚本中,强制限制各服务的最大堆内存。例如将默认的 1G 改为 512M 或 256M:# 示例:限制每个服务最大内存 spring: application: name: ruoyi-system # 启动参数:-Xms256m -Xmx512m - 关闭非必要模块:
如果是纯后端开发,可以暂时移除ruoyi-quartz(定时任务)、ruoyi-demo(演示模块) 等,减少进程数量。 - 使用 Docker Compose 优化:
利用 Docker 的资源限制功能(mem_limit,cpus),防止某个服务吃光所有内存导致其他服务挂掉。 - Nacos 配置:
确保 Nacos 使用外部 MySQL 而不是内置 Derby,虽然 Derby 省内存,但性能差且不稳定。 - Swap 分区:
在 Linux 上创建至少 4GB 的 Swap 分区,作为内存溢出的最后一道防线(虽然会拖慢速度,但能保活)。
总结表
| 环境类型 | CPU | 内存 (RAM) | 硬盘 | 备注 |
|---|---|---|---|---|
| 最低开发/学习 | 2 核 | 4 GB | 40 GB SSD | 需手动调小 JVM 参数,可能偶发 OOM |
| 推荐生产环境 | 4 核 | 8 GB | 80 GB+ SSD | 稳定运行,支持基础并发 |
| 高可用生产 | 4 核 x 2 (集群) | 8 GB x 2 | 独立云盘 | 建议拆分部署,Nacos/DB 独立 |
最终建议:如果你只是自己本地搭建学习,2 核 4G 是可行的底线;如果是给客户做演示或上线试运行,请务必选择 4 核 8G 及以上的配置,否则维护成本极高。
云服务器