RuoYi-Cloud 是基于 Spring Cloud Alibaba 的微服务架构,包含 Nacos(注册中心/配置中心)、Sentinel(流控)、Seata(分布式事务)、Gateway(网关)以及多个业务微服务。由于组件较多且依赖内存,其资源消耗远高于单体应用(如 RuoYi-Vue)。
以下是针对不同场景的最低配置建议:
1. 核心结论:最低推荐配置
如果你是在开发测试环境或极低负载的内部演示环境中运行,建议的最低配置如下:
- CPU: 2 核 (vCPU)
- 内存: 4 GB RAM
- 硬盘: 20 GB SSD
- 操作系统: Linux (CentOS 7/8, Ubuntu 20.04+)
注意:在 4GB 内存下,系统必须开启 Swap(虚拟内存)以防止 OOM(内存溢出),且只能运行最核心的几个模块(Nacos, Gateway, Auth, System),其他非核心业务模块可能需要手动关闭。
2. 详细资源拆解分析
为了让你理解为什么需要这个配置,我们可以简单拆解一下各组件的内存占用情况(基于默认配置):
| 组件 | 角色 | 预估内存占用 | 说明 |
|---|---|---|---|
| JVM 基础 | Java 进程 | 512MB – 1GB | 每个微服务启动至少需要 512MB+,多服务叠加会迅速吃光内存。 |
| Nacos | 注册/配置中心 | 1GB – 1.5GB | 默认堆内存较大,是内存大户,建议使用 server: mode: standalone 模式。 |
| Gateway | 网关 | 512MB | 负责路由转发和鉴权。 |
| Auth | 认证服务 | 512MB | 处理登录、Token 生成。 |
| System | 系统管理 | 512MB | 菜单、用户、角色等基础功能。 |
| 数据库 | MySQL | 512MB – 1GB | 若将 DB 也部署在同一台服务器,需预留空间。 |
| Redis | 缓存 | 256MB | 用于 Session 和 Token 存储。 |
| 操作系统 | OS | 512MB | Linux 自身开销。 |
计算逻辑:
上述组件加起来,纯应用层 + 中间件大约需要 3.5GB – 4.5GB 内存。如果再加上操作系统开销,4GB 物理内存处于临界值。一旦并发稍高或 GC(垃圾回收)频繁,极易导致服务崩溃。
3. 不同场景的配置建议
A. 开发/学习环境 (单人使用)
- 配置: 2 核 4G
- 策略:
- 必须安装 Swap 分区(建议大小等于内存大小,即 4G),防止 OOM Kill。
- 修改
application.yml中的 Nacos 配置,降低 JVM 参数(如-Xms512m -Xmx512m)。 - 只启动必要的微服务,其他业务模块(如代码生成、定时任务等)可暂时不启动。
B. 生产环境 (正式对外服务)
- 配置: 4 核 8G 起步 (推荐)
- 理由:
- 生产环境需要应对突发流量,GC 停顿时间不能过长。
- 需要保证 Redis、MySQL 和所有微服务都能稳定运行而不互相抢占资源。
- 通常建议将 数据库 (MySQL) 和 缓存 (Redis) 独立部署到另一台服务器,这样主应用服务器只需 4 核 4G 即可流畅运行。
C. 高可用集群 (HA)
- 配置: 3 台节点,每台 2 核 4G
- 策略:
- Nacos 集群部署(至少 3 节点)。
- MySQL 主从复制。
- 微服务多实例部署以实现负载均衡。
4. 关键优化建议 (针对低配服务器)
如果你受限于硬件条件,必须在 2 核 4G 上运行,请务必执行以下优化:
- 开启 Swap 交换空间:
# 示例:创建 4G swap 文件 dd if=/dev/zero of=/swapfile bs=1M count=4096 chmod 600 /swapfile mkswap /swapfile swapon /swapfile - 调整 JVM 参数:
在bootstrap.yml或启动脚本中,强制限制各服务的最大堆内存,避免单个服务吃掉所有内存。# 示例:Nacos 配置 spring: application: name: nacos # 启动参数示例:java -Xms256m -Xmx512m ... - 精简依赖:
不要引入不必要的 Starter(如某些监控、链路追踪组件),或者将 Seata、Sentinel 等中间件暂时关闭。 - 容器化部署 (Docker):
使用 Docker Compose 可以更方便地控制每个容器的内存限制(mem_limit),防止某个服务异常导致整台机器宕机。
总结
- 绝对底线:2 核 4G(仅适合单机开发,风险较高)。
- 推荐起步:4 核 8G(适合小型生产环境)。
- 最佳实践:数据库和缓存独立部署,应用服务器 4 核 4G。
云服务器