在 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 请求均依赖网络吞吐;千兆是底线 |
⚠️ 重要注意事项(决定能否稳定运行)
-
MinIO 不要使用
--console-address暴露控制台到公网
→ 生产环境应通过反向X_X(Nginx)+ HTTPS + Basic Auth / JWT 保护,或禁用 Console(--console-address :0)。 -
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 -
Spring Boot 启动参数(防止 OOM)
java -Xms2g -Xmx3g -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -Dspring.profiles.active=prod -jar app.jar -
MinIO 部署方式选择
✅ 推荐:独立目录 + systemd 服务(非 Docker 容器内嵌,避免资源争抢)
❌ 避免docker run -d --network host(网络冲突风险高)
❌ 避免与 MySQL 共用 Docker Compose(资源隔离差,OOM Killer 易杀错进程) -
存储分离(硬性要求)
- MySQL 数据目录(
/var/lib/mysql)和 MinIO 数据目录(如/mnt/minio/data)必须位于不同物理磁盘或 LVM 逻辑卷。 - 否则高并发写入时 I/O 争抢严重,响应延迟飙升(尤其 MinIO 大文件上传 + MySQL 事务日志刷盘)。
- 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 配置起步,监控
htop、iostat -x 1、minio 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 图片”),我可帮你定制优化方案。
CLOUD云计算