RuoYi-Cloud 是基于 Spring Cloud Alibaba 的微服务架构,相比单体应用(如 RuoYi-Vue),它对资源消耗更大,因为包含了注册中心(Nacos)、配置中心、网关(Gateway)、多个微服务模块以及数据库等组件。
在云环境中部署,最低配置取决于你的业务规模(用户量、并发量)以及对系统稳定性的要求。以下是针对不同场景的配置建议:
1. 绝对最低配置(仅限开发测试/演示环境)
如果你只是用于本地开发验证、个人学习或极低并发的内部演示,可以勉强运行在以下配置上:
- CPU: 2 核 (vCPU)
- 内存: 4 GB RAM
- 磁盘: 40 GB SSD
- 操作系统: CentOS 7.9 / Ubuntu 20.04+
⚠️ 风险提示:
在此配置下,JVM 堆内存(Heap)需要非常小心地设置。如果分配不当,极易触发 OOM(内存溢出)导致 Nacos 或 Gateway 崩溃。
- 关键调整:必须修改各服务的
application.yml中的 JVM 启动参数(如-Xms512m -Xmx512m),防止内存争抢。Nacos 默认可能需要 1GB+ 内存,需配合压缩启动或降低日志级别。
2. 推荐生产级最低配置(小型企业/正式环境)
如果是面向真实用户的正式环境,为了保证系统不频繁重启、响应速度正常,建议采用以下“起步”配置:
-
方案 A:单节点高配版(适合初期)
- CPU: 4 核
- 内存: 8 GB RAM
- 磁盘: 60 GB + SSD
- 说明:所有组件(Nacos, Gateway, Auth, System, Business 等)部署在同一台服务器上。通过合理的 JVM 参数调优(例如总堆内存控制在 6GB 以内),可以勉强支撑几十人同时在线。
-
方案 B:多节点分离版(更稳健,推荐)
- 计算节点:2 台服务器,每台 2 核 4G(分别部署核心微服务和网关)。
- 存储/中间件节点:1 台服务器,2 核 4G(专门部署 MySQL 和 Redis/Nacos)。
- 优势:避免数据库占用过多内存导致微服务崩溃,提升稳定性。
3. 核心组件的资源依赖分析
理解各组件的内存需求有助于你进行规划:
| 组件 | 最小内存需求 (估算) | 备注 |
|---|---|---|
| Nacos | 2GB – 4GB | 包含注册中心和配置中心,Java 进程,对内存敏感。 |
| MySQL | 1GB – 2GB | 取决于数据量和连接数,建议开启 InnoDB Buffer Pool。 |
| Redis | 512MB – 1GB | 缓存会话、验证码等,占用较小但至关重要。 |
| Gateway | 512MB – 1GB | 网关本身较轻,但处理大量路由规则时需注意。 |
| Auth/System | 512MB – 1GB | 认证和服务管理模块。 |
| 其他业务模块 | 512MB/个 | 每个独立模块通常至少需要 512MB 堆内存。 |
注意:Linux 系统本身也需要预留约 500MB – 1GB 内存。因此,8GB 内存是运行完整微服务集群的“安全线”。
4. 优化建议与避坑指南
如果受限于预算只能使用低配服务器,请务必执行以下优化:
-
JVM 参数调优:
不要使用默认配置。在启动脚本中强制限制最大堆内存,防止单个服务吃光内存。# 示例:限制某个服务最大 512M JAVA_OPTS="-Xms256m -Xmx512m -XX:+UseG1GC"对于 4GB 内存的机器,建议将 Nacos 设为
-Xmx1g,其他微服务设为-Xmx512m。 -
Nacos 模式选择:
如果内存极度紧张,可以将 Nacos 设置为单机模式(nacos.mode=standalone),但这在生产环境不建议长期使用,且需确保数据持久化到外部 MySQL。 -
容器化部署 (Docker/K8s):
使用 Docker Compose 或 K8s 可以更灵活地限制每个容器的memory_limit。当某个微服务内存超标时,K8s 会将其杀死并重启,而不是拖垮整台物理机。 -
监控告警:
务必安装 Prometheus + Grafana 或阿里云/腾讯云自带的监控。一旦 CPU 或 内存使用率超过 80%,立即扩容或优化代码,否则生产事故概率极高。
总结结论
- 纯学习/测试:2 核 4G(需严格调优 JVM,风险较高)。
- 正式生产环境(最低标准):4 核 8G(单节点)或 3 台 2 核 4G(分离部署)。
- 建议:对于云服务,成本差异不大,强烈建议直接上 4 核 8G 起步。这能避免因内存不足导致的频繁宕机,节省大量的排查和维护时间。
云计算HECS