在 2核 2G(2GB RAM)的服务器上部署 Ruoyi-Cloud(Spring Cloud 微服务架构),这是一个非常极端的资源限制。
⚠️ 核心结论
官方推荐的 Ruoyi-Cloud 架构无法直接在 2C2G 单节点上完整运行所有服务。
如果强行按默认配置启动,服务器会因 OOM(内存溢出)崩溃。
✅ 可行方案:精简部署 + 极致优化
你必须采用 “单体化改造” 或 “最小化微服务拆分” 策略。以下是 唯一可行的分配建议:
📌 推荐架构:仅保留核心服务
将以下服务合并或精简为 3~4 个进程:
- Nacos(注册中心/配置中心)
- Gateway(网关)
- System(系统模块,含用户、权限等基础功能)
- Monitor(可选,监控日志,可暂不部署)
❌ 删除或合并:Codegen(代码生成)、Gen(代码生成独立服务)、Job(定时任务)、File(文件服务)、Flowable/Activiti(工作流)、Monitor(若资源紧张则移除)
💾 内存分配建议(总内存 ≤ 1.8GB,预留 0.2GB 给 OS)
| 服务 | JVM 初始内存 (-Xms) |
JVM 最大内存 (-Xmx) |
说明 |
|---|---|---|---|
| Nacos | 512MB | 768MB | Nacos 是内存大户,必须限制最大堆,否则易 OOM |
| Gateway | 128MB | 256MB | 网关本身轻量,但需处理路由和过滤器 |
| System | 256MB | 512MB | 业务逻辑集中在此,适当留余量 |
| OS 预留 | — | ~200MB | Linux 内核缓存、文件描述符等 |
✅ 总计使用:约 1.5~1.7GB,留有安全余量。
🔧 关键优化措施(必须执行)
1. 修改各服务的 application.yml 或启动参数
在每个服务的启动命令中强制指定 JVM 内存:
# 示例:启动 system 服务
java -Xms256m -Xmx512m -jar ruoyi-system.jar
# 示例:启动 gateway 服务
java -Xms128m -Xmx256m -jar ruoyi-gateway.jar
# 示例:启动 nacos(通过 startup.sh 或直接 java -jar)
java -Xms512m -Xmx768m -jar nacos-server.jar
2. Nacos 特殊优化
- 编辑
bin/startup.sh,找到JAVA_OPT部分,确保包含:JAVA_OPT="${JAVA_OPT} -Xms512m -Xmx768m" - 关闭不必要的插件(如 MySQL 持久化改为 Derby 嵌入式模式,节省数据库资源)。
3. 数据库优化
- 使用 MySQL 5.7/8.0,调整
innodb_buffer_pool_size为 128MB~256MB。 - 或者考虑使用 H2 嵌入式数据库(仅用于开发测试,生产环境不推荐,但最省资源)。
4. 禁用非必要组件
- 关闭 Redis(Ruoyi-Cloud 默认依赖 Redis 做缓存和会话共享)。
→ 修改配置,改用本地缓存或简单实现。 - 关闭 Quartz 定时任务模块(除非你有实际定时任务需求)。
- 关闭 Actuator 健康检查端点(减少内存开销)。
5. 启用 G1GC 垃圾回收器(可选)
-XX:+UseG1GC -XX:MaxGCPauseMillis=200
🚫 为什么不能跑全量服务?
Ruoyi-Cloud 默认包含以下服务,每个至少需要 256MB+:
- Nacos (768MB+)
- Gateway (256MB)
- System (512MB)
- Auth (256MB)
- Codegen (256MB)
- Gen (256MB)
- Job (256MB)
- Monitor (256MB)
- File (256MB)
总和远超 2GB,且 Spring Cloud 本身有较高的元空间(Metaspace)和线程开销。
✅ 更优替代方案
如果你坚持使用 Ruoyi-Cloud,建议:
方案 A:升级服务器(强烈推荐)
- 最低配置:4核 4GB
- 推荐配置:4核 8GB
- 这样可正常运行全部服务,无需过度优化。
方案 B:改用 Ruoyi-Vue(前后端分离单体版)
- Ruoyi-Vue 是一个单体应用,JVM 只需分配 512MB~1GB。
- 2C2G 服务器完全可以流畅运行 Ruoyi-Vue。
- 优点:部署简单、资源占用低、适合小项目。
- 缺点:不具备微服务弹性扩展能力。
方案 C:容器化 + 限制资源(Docker/K8s)
如果使用 Docker,可通过 docker run --memory="1.5g" 限制总内存,避免宿主机崩溃。
📝 总结
| 项目 | 建议值 |
|---|---|
| 可运行服务数 | 最多 3~4 个(Nacos + Gateway + System) |
| Nacos 内存 | 512MB ~ 768MB |
| Gateway 内存 | 128MB ~ 256MB |
| System 内存 | 256MB ~ 512MB |
| 是否推荐 | ❌ 不推荐生产环境使用 2C2G 运行完整 Ruoyi-Cloud |
| 最佳替代 | 升级至 4C4G,或改用 Ruoyi-Vue 单体版 |
💡 最终建议:如果预算有限,请改用 Ruoyi-Vue;如果必须用微服务架构,请至少升级到 4核 4GB 服务器。
CLOUD技术博