在使用 2核2G 的云服务器部署 若依(RuoYi)系统 时,由于资源有限,必须进行合理配置优化,以确保系统稳定运行、避免频繁内存溢出或响应缓慢。以下是针对硬件限制的全面优化建议:
一、JVM 参数优化(核心重点)
若依是基于 Spring Boot 的 Java 应用,JVM 内存设置直接影响性能和稳定性。
推荐 JVM 启动参数:
-Xms512m -Xmx1024m -Xmn384m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m -XX:+UseG1GC -XX:MaxGCPauseMillis=200
说明:
-Xms512m:初始堆内存 512MB-Xmx1024m:最大堆内存 1GB(防止占用过多导致系统崩溃)-Xmn384m:年轻代大小,适合 G1GC-XX:MetaspaceSize和MaxMetaspaceSize:控制元空间,避免动态膨胀耗尽内存-XX:+UseG1GC:使用 G1 垃圾回收器,低延迟,适合小内存环境-XX:MaxGCPauseMillis=200:控制 GC 暂停时间
⚠️ 不要将堆内存设为 2G,否则系统无剩余内存给操作系统、MySQL、Redis 等服务。
二、数据库优化(MySQL)
若依默认使用 MySQL,需降低其内存占用。
修改 my.cnf 配置(关键参数):
[mysqld]
# 基础设置
port = 3306
bind-address = 127.0.0.1
skip-name-resolve
# 内存相关(精简版)
key_buffer_size = 16M
max_allowed_packet = 1M
table_open_cache = 64
sort_buffer_size = 64K
read_buffer_size = 256K
read_rnd_buffer_size = 256K
join_buffer_size = 256K
tmp_table_size = 32M
max_heap_table_size = 32M
# InnoDB 设置
innodb_buffer_pool_size = 256M # 最大不超过 512M
innodb_log_file_size = 64M
innodb_flush_log_at_trx_commit = 2
innodb_flush_method = O_DIRECT
innodb_thread_concurrency = 4
innodb_io_capacity = 200
# 连接数
max_connections = 50 # 减少连接数
wait_timeout = 300
interactive_timeout = 300
说明:
innodb_buffer_pool_size是最大内存消耗项,建议设为 256M~512M。- 关闭 DNS 解析(
skip-name-resolve)提升连接速度。 - 限制最大连接数,防止连接过多耗尽内存。
三、关闭不必要的服务
2核2G 资源紧张,应只保留必要组件:
| 组件 | 是否建议开启 | 说明 |
|---|---|---|
| Redis | ✅ 建议开启 | 若依权限、缓存依赖 Redis,但可调低内存 |
| Nginx | ✅ 建议开启 | 用于反向、静态资源托管,节省 Tomcat 负载 |
| MySQL | ✅ 必须开启 | 数据库 |
| Elasticsearch | ❌ 建议关闭 | 若无需全文检索功能 |
| RabbitMQ/Kafka | ❌ 按需开启 | 异步任务非必需可禁用 |
四、Redis 优化
若启用 Redis,调整其内存使用:
修改 redis.conf:
maxmemory 128mb
maxmemory-policy allkeys-lru
说明:
- 限制 Redis 最大使用 128MB 内存
- 使用 LRU 策略自动淘汰旧键,防止 OOM
五、Nginx 静态资源(推荐)
将若依前端打包后的 dist 目录由 Nginx 托管,减轻后端压力。
示例配置:
server {
listen 80;
server_name your-domain.com;
location / {
root /www/ruoyi-ui/dist;
try_files $uri $uri/ /index.html;
}
location /prod-api/ {
proxy_pass http://localhost:8080/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
六、系统级优化
1. 开启 Swap 分区(重要!)
2G 内存容易爆,建议创建 1G~2G 的 Swap:
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
# 永久生效:写入 /etc/fstab
2. 使用轻量级 JDK
- 使用 OpenJDK 11 或 17(比 Oracle JDK 更省内存)
- 可考虑 Alibaba Dragonwell 或 Eclipse Temurin 精简版
3. 禁用 IPv6(可选)
减少网络栈开销:
echo "net.ipv6.conf.all.disable_ipv6 = 1" >> /etc/sysctl.conf
sysctl -p
七、应用层面优化(若依系统)
-
关闭未使用的模块
如:代码生成、定时任务、系统监控等非核心功能可在application.yml中关闭。 -
日志级别调为 WARN
logging: level: com.ruoyi: WARN org.springframework: WARN避免 DEBUG 日志刷屏占 I/O 和内存。
-
减少线程池大小
在application.yml中调整异步任务线程池:spring: task: execution: pool: core-size: 4 max-size: 8
八、监控与告警
安装基础监控工具,及时发现问题:
htop:查看 CPU、内存实时使用free -h:检查内存 + swapjstat -gc <pid>:查看 JVM GC 情况journalctl -u ruoyi:查看服务日志
总结:资源配置建议
| 服务 | 内存分配建议 |
|---|---|
| JVM (RuoYi) | 512M ~ 1G |
| MySQL | 256M ~ 512M |
| Redis | ≤128M |
| Nginx | ~50M |
| 系统 + Swap | 剩余内存 + 1~2G Swap |
✅ 总体原则:宁可牺牲性能,也要保证不 OOM
通过以上优化,2核2G 云服务器可以稳定运行若依系统,适用于中小型项目或测试环境。如并发较高(>100用户),建议升级至 4核4G 或以上配置。
CLOUD技术笔记