部署Java服务器的配置需要根据应用场景、并发量、性能需求以及预算来综合选择。以下是一些关键考虑因素和建议配置方案:
1. 基础配置参考
小型应用/测试环境
- CPU: 2核 (如 Intel Xeon E5 或 AMD EPYC 基础款)
- 内存: 4GB~8GB (Java应用建议预留至少2GB堆内存)
- 存储: 50GB SSD (系统+日志+应用)
- 带宽: 1Mbps~5Mbps (低并发)
- 操作系统: Linux (如 CentOS 7/8、Ubuntu 20.04 LTS)
- Java版本: OpenJDK 11/17 或 Oracle JDK (长期支持版本)
中型应用/生产环境
- CPU: 4核~8核 (高频或多线程优化)
- 内存: 16GB~32GB (根据堆内存需求调整,建议预留50%内存给系统)
- 存储: 100GB~500GB SSD (考虑日志轮转和数据库分离)
- 带宽: 10Mbps~100Mbps (需结合CDN和负载均衡)
- JVM参数: 调优堆内存 (如
-Xms8g -Xmx8g)
高并发/大型企业级应用
- CPU: 16核以上 (多实例部署时优先选择多核)
- 内存: 64GB~128GB (堆内存可分配32GB~64GB)
- 存储: 高性能NVMe SSD + 分布式存储
- 网络: 千兆/万兆网卡 + 负载均衡 (如Nginx、HAProxy)
- 集群部署: 多节点 + 容器化 (Kubernetes/Docker)
2. 关键优化项
JVM调优
- 堆内存分配: 根据应用需求设置
-Xms和-Xmx(建议1:1避免动态扩容开销)。 - 垃圾回收器选择:
- 低延迟: G1 (
-XX:+UseG1GC) - 高吞吐量: Parallel GC (
-XX:+UseParallelGC)
- 低延迟: G1 (
- 监控工具: JDK Mission Control、VisualVM、Prometheus + Grafana。
服务器优化
- 线程池配置: 调整Tomcat/Nety等容器的线程数 (如
maxThreads)。 - 文件描述符限制: 修改Linux的
ulimit -n(建议至少65535)。 - 内核参数: 优化TCP连接 (
net.core.somaxconn、net.ipv4.tcp_tw_reuse)。
安全建议
- 使用非root用户运行Java进程。
- 定期更新JDK和依赖库的安全补丁。
- 配置防火墙规则 (仅开放必要端口)。
3. 云服务推荐配置
- AWS:
- 中小型:
t3.xlarge(4vCPU, 16GB) + EBS GP3 - 大型:
m6i.4xlarge(16vCPU, 64GB) + EBS io2
- 中小型:
- 阿里云:
- 通用型
ecs.g7ne.4xlarge(16vCPU, 64GB) + ESSD PL1
- 通用型
- 容器化:
- Kubernetes Pod资源限制: 4CPU + 8GB内存/实例。
4. 其他注意事项
- 日志管理: 使用Log4j2/Logback异步日志,避免I/O阻塞。
- 监控告警: 集成APM工具 (如SkyWalking、New Relic)。
- 备份策略: 定期备份应用数据和配置文件。
5. 示例命令
# 查看服务器资源
free -h # 内存
df -h # 磁盘
top # CPU/进程
# 启动Java应用 (示例)
java -Xms4g -Xmx4g -XX:+UseG1GC -jar app.jar
根据实际压力测试结果调整配置,推荐使用 JMeter 或 wrk 进行基准测试。
云服务器