走啊走
加油

Spring Boot + MySQL + MinIO 三合一部署,最小推荐服务器配置是多少?

服务器价格表

在 Spring Boot + MySQL + MinIO 三合一部署(即单机/单服务器上共存)的场景下,最小推荐配置需兼顾稳定性、基本并发能力与可维护性,而非仅满足“能启动”。以下是综合生产实践、官方建议和常见瓶颈分析后的最小推荐配置


最小推荐服务器配置(生产可用,非开发/测试)

组件 推荐配置 说明
CPU 4 核(vCPU) Spring Boot(中等负载)、MySQL(基础事务)、MinIO(对象读写)均需 CPU 资源;2 核易在并发 I/O 或 GC 时成为瓶颈
内存 8 GB RAM ⚠️ 关键项!
• Spring Boot 应用:建议 -Xms2g -Xmx3g(预留 JVM 堆)
• MySQL:至少 innodb_buffer_pool_size=2g(占内存 25%~30%)
• MinIO:默认内存占用约 500MB~1GB(启用纠删码或高并发时更高)
• OS + 其他进程:需预留 ≥1.5GB
磁盘 100 GB SSD(NVMe 更佳) • 系统+软件:20GB
• MySQL 数据文件(含日志):初期 10~20GB,需预留增长空间
• MinIO 存储桶:必须独立挂载点(如 /mnt/minio),建议单独分区;若存业务文件,100GB 仅支持 ~10~50 万张图片(按平均 2MB/张)
• ❗避免将 MinIO 和 MySQL 共用同一慢速 HDD 或小容量系统盘
操作系统 Linux(Ubuntu 22.04 LTS / CentOS Stream 9) 推荐 Ubuntu(生态友好)或 Rocky Linux;需关闭 SELinux/AppArmor(或正确配置策略)
网络 1 Gbps 内网带宽(必备) MinIO 上传/下载、MySQL 连接、Spring Boot HTTP 请求均依赖网络吞吐;千兆是底线

⚠️ 重要注意事项(决定能否稳定运行)

  1. MinIO 不要使用 --console-address 暴露控制台到公网
    → 生产环境应通过反向X_X(Nginx)+ HTTPS + Basic Auth / JWT 保护,或禁用 Console(--console-address :0)。

  2. MySQL 必须调优(否则 2GB 内存都会卡死)

    # my.cnf 示例(适配 8GB 内存)
    innodb_buffer_pool_size = 2G
    max_connections = 100
    innodb_log_file_size = 256M
    tmp_table_size = 64M
    max_heap_table_size = 64M
  3. Spring Boot 启动参数(防止 OOM)

    java -Xms2g -Xmx3g -XX:+UseG1GC -XX:MaxGCPauseMillis=200 
        -Dspring.profiles.active=prod 
        -jar app.jar
  4. MinIO 部署方式选择
    推荐:独立目录 + systemd 服务(非 Docker 容器内嵌,避免资源争抢)
    ❌ 避免 docker run -d --network host(网络冲突风险高)
    ❌ 避免与 MySQL 共用 Docker Compose(资源隔离差,OOM Killer 易杀错进程)

  5. 存储分离(硬性要求)

    • MySQL 数据目录(/var/lib/mysql)和 MinIO 数据目录(如 /mnt/minio/data必须位于不同物理磁盘或 LVM 逻辑卷
    • 否则高并发写入时 I/O 争抢严重,响应延迟飙升(尤其 MinIO 大文件上传 + MySQL 事务日志刷盘)。

🚫 绝对不推荐的配置(常见踩坑)

配置 问题
2 核 4GB RAM MySQL 缓冲池 <1G → 全表扫描变慢;MinIO 并发 >10 即超时;JVM GC 频繁卡顿
系统盘兼作 MinIO 存储 磁盘 I/O 饱和 → SSH 登录卡顿、MySQL 写入阻塞、MinIO 上传失败率 >30%
未设置 ulimit MinIO 默认需 ulimit -n 65536,否则连接数超限报 too many open files

✅ 进阶建议(平滑演进)

  • 短期:用上述 4C8G 配置起步,监控 htopiostat -x 1minio server --console-address 日志;
  • 中期(用户 >1k/天):拆分 MySQL 到独立 RDS(如阿里云 RDS MySQL),MinIO 用集群模式;
  • 长期:Spring Boot 微服务化 + MinIO 独立集群 + MySQL 主从读写分离。

如需,我可为你提供:

  • ✅ 一键部署脚本(Ubuntu 22.04 + systemd 服务配置)
  • ✅ Nginx 反向X_X MinIO Console + Basic Auth 配置
  • ✅ MySQL + MinIO 性能压测方案(wrk + minio-go benchmark)
  • ✅ Spring Boot 连接池(HikariCP)+ MinIO SDK 最佳实践

欢迎随时提出具体场景(如“日均 500 上传请求”、“存储 1TB 图片”),我可帮你定制优化方案。