使用2核2G的云服务器部署若依系统需要优化哪些配置?

在使用 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:MetaspaceSizeMaxMetaspaceSize:控制元空间,避免动态膨胀耗尽内存
  • -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 DragonwellEclipse Temurin 精简版

3. 禁用 IPv6(可选)

减少网络栈开销:

echo "net.ipv6.conf.all.disable_ipv6 = 1" >> /etc/sysctl.conf
sysctl -p

七、应用层面优化(若依系统)

  1. 关闭未使用的模块
    如:代码生成、定时任务、系统监控等非核心功能可在 application.yml 中关闭。

  2. 日志级别调为 WARN

    logging:
      level:
        com.ruoyi: WARN
        org.springframework: WARN

    避免 DEBUG 日志刷屏占 I/O 和内存。

  3. 减少线程池大小
    application.yml 中调整异步任务线程池:

    spring:
      task:
        execution:
          pool:
            core-size: 4
            max-size: 8

八、监控与告警

安装基础监控工具,及时发现问题:

  • htop:查看 CPU、内存实时使用
  • free -h:检查内存 + swap
  • jstat -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 或以上配置。