Spring Boot Web 服务器的配置需求取决于多个因素,包括应用类型、并发量、业务复杂度、数据规模等。以下是一个通用的配置建议指南,供参考:
1. 基础配置(开发/测试环境)
- CPU:1-2 核(轻量级开发或测试)
- 内存:2-4 GB(JVM 默认占用约 1-2GB)
- 存储:20-50 GB(SSD,用于系统、日志和少量数据)
- 适用场景:
- 本地开发调试
- 低并发测试(< 100 QPS)
- 小型内部系统或原型验证
2. 生产环境(中小型应用)
- CPU:2-4 核(常规 Spring Boot 应用)
- 内存:4-8 GB(JVM 分配 2-4 GB,需预留系统开销)
- 存储:50-100 GB(SSD,日志、缓存和数据库分离时)
- 适用场景:
- 中等并发(100-1000 QPS)
- 无状态服务(如 REST API)
- 微服务架构中的单个服务节点
3. 高性能/高并发场景
- CPU:4-8 核(需优化线程池和异步处理)
- 内存:8-16 GB(JVM 分配 4-8 GB,避免频繁 GC)
- 存储:100+ GB(SSD,高吞吐日志或本地缓存)
- 适用场景:
- 高并发(> 1000 QPS)
- 复杂业务逻辑或大量计算
- 需处理大文件上传/下载(需调整 Tomcat 或 Undertow 配置)
关键影响因素
-
并发用户数:
- 每 100 并发用户约需 0.5-1 GB 内存(视请求复杂度而定)。
- 使用
jmeter或wrk压测确定实际需求。
-
JVM 优化:
- 建议 JVM 堆内存不超过总内存的 50%(例如 4GB 内存,分配
-Xmx2g -Xms2g)。 - 选择 G1 垃圾回收器(
-XX:+UseG1GC)减少停顿。
- 建议 JVM 堆内存不超过总内存的 50%(例如 4GB 内存,分配
-
静态资源与缓存:
- 若使用 Nginx 反向X_X,可降低应用服务器负载。
- 集成 Redis 缓存数据库查询,减少 CPU 压力。
-
容器化部署:
- Docker 容器建议设置资源限制(如
--memory=4g --cpus=2)。 - Kubernetes 中配置
requests/limits避免资源竞争。
- Docker 容器建议设置资源限制(如
配置优化建议
- Web 服务器选择:
- 默认 Tomcat:适合大多数场景。
- Undertow/Netty:更高并发(如 WebSocket 或响应式应用)。
- 线程池调优:
server.tomcat.max-threads=200 # 默认 200,根据并发调整 server.tomcat.max-connections=10000 - 启用压缩:
server.compression.enabled=true
示例场景
- 博客网站(低并发):
- 2 核 CPU + 2GB 内存 + 50GB 存储。
- 电商促销活动(高并发):
- 4 核 CPU + 8GB 内存 + 横向扩展(多实例 + 负载均衡)。
监控与扩展
- 使用
Prometheus + Grafana监控 CPU/内存/GC。 - 云服务(如 AWS/Aliyun)支持弹性伸缩,初期可从低配开始,按需升级。
根据实际业务需求逐步调整配置,避免过度分配资源。
云服务器