直接给结论:RuoYi 前后端分离版在 Linux 服务器上的最低配置建议是 2 核 CPU + 2GB 内存,生产环境推荐 4 核 CPU + 4GB 内存。
不要迷信“跑起来就行”,要看你的并发量和业务复杂度。以下是基于实际部署经验的详细拆解:
1. 核心组件资源消耗分析
RuoYi-Vue-Plus(或标准版)的前后端分离架构主要涉及三个运行进程,它们的资源需求如下:
- 后端 (Spring Boot):
- Java 虚拟机(JVM)本身就有开销。默认情况下,Spring Boot 应用启动需要占用约 300MB-500MB 的堆内存。
- 如果开启了 Redis 缓存、定时任务较多或涉及复杂报表导出,内存占用会迅速攀升。
- CPU:Java 代码执行对单核性能要求较高,多核主要用于处理并发请求和 GC(垃圾回收)。
- 前端 (Vue/Nginx):
- 静态资源托管通常使用 Nginx。Nginx 极其轻量,1GB 内存足以支撑数万并发连接,CPU 占用几乎可以忽略不计(除非做复杂的反向X_X规则)。
- 中间件 (MySQL/Redis):
- MySQL:这是最大的内存大户。即使只是 RuoYi 自带的 H2 或 MySQL 8.0,官方建议至少分配 512MB-1GB 内存用于缓冲池(Buffer Pool),否则查询会变慢甚至 OOM。
- Redis:通常只需要 256MB-512MB 即可满足用户会话和简单缓存需求。
2. 不同场景的配置方案
方案 A:个人学习 / 内部测试 / 极低并发(日活<100)
- CPU:2 核
- 内存:2GB
- 说明:这是极限操作。你需要手动调整 JVM 参数(如
-Xmx512m),限制 MySQL 的 buffer pool 大小。如果此时有人同时打开多个页面,或者执行一次大数据量导出,服务极易崩溃。 - 风险:一旦遇到高并发,系统响应延迟会明显增加,甚至出现 502 Bad Gateway。
方案 B:正式生产环境 / 中小企业(日活 100-2000)
- CPU:4 核
- 内存:4GB
- 说明:这是最稳妥的起步配置。
- 预留 2GB 给 JVM 和数据库。
- 剩余 2GB 给操作系统和其他进程。
- 支持正常的业务流转、文件上传下载以及简单的报表生成。
- 优势:应对早晚高峰流量波动有足够余量,系统稳定性高。
方案 C:高并发 / 复杂业务 / 数据量大
- CPU:8 核及以上
- 内存:8GB 及以上
- 说明:如果你的系统包含复杂的权限控制、大量历史数据查询、或者需要集成 OCR、AI 等重型功能,必须升级配置。
- 注意:此时建议将 MySQL 和 Redis 单独部署到另一台服务器,或者使用云数据库 RDS,避免应用服务器资源被数据库抢占。
3. 避坑指南与优化建议
-
Docker 部署更省资源:
使用 Docker Compose 编排时,务必在docker-compose.yml中明确限制每个容器的mem_limit和cpus。如果不限制,Docker 容器可能会吃光宿主机所有内存导致 OOM Killer 触发,直接杀掉进程。 -
JVM 调优是关键:
在 2GB 或 4GB 内存的机器上,默认的 JVM 启动参数往往不合理。- 建议设置
-Xms512m -Xmx512m(2GB 机器)或-Xms1g -Xmx1g(4GB 机器)。 - 开启 G1 垃圾收集器:
-XX:+UseG1GC,减少 Full GC 带来的停顿。
- 建议设置
-
Nginx 的作用:
前端 Vue 打包后的静态文件(dist 目录)一定要交给 Nginx 托管,不要通过 Spring Boot 的ResourceHandler去访问。前者是纯静态读取,后者要经过 Java 线程池,后者在低配服务器上就是性能瓶颈。 -
监控先行:
上线前,先装一个htop或Prometheus+NodeExporter。观察真实运行时的内存峰值,再决定是否需要扩容。很多项目报错不是因为配置不够,而是因为代码里有内存泄漏(如未关闭的流、ThreadLocal 未清理)。
总结:
别为了省钱买 1GB 内存的云服务器跑 RuoYi,那是给开发者找罪受。4 核 4G 是目前性价比最高、能扛住基本业务压力的黄金配置。如果预算有限,优先保证内存不低于 2GB,CPU 可以适当降为 2 核,但内存不足会导致频繁的 Swap 交换,系统会卡到无法接受。
云知道CLOUD