在部署 Java 后端服务器时,合理的配置可以显著提升系统性能、稳定性和安全性。以下是从硬件、操作系统、JVM、应用服务器、数据库、安全、监控等方面给出的综合配置推荐,适用于常见的 Spring Boot、Spring Cloud、微服务架构等 Java 应用。
一、硬件配置推荐(以中等规模系统为例)
| 项目 | 推荐配置 |
|---|---|
| CPU | 4 核 ~ 8 核(高并发可扩展至 16 核) |
| 内存 | 8 GB ~ 16 GB(JVM 堆内存建议 4~8GB) |
| 硬盘 | SSD 至少 100 GB,建议使用云盘或 RAID |
| 带宽 | 100 Mbps 起(根据业务流量调整) |
| 部署方式 | 单机、集群、Kubernetes 集群(高可用推荐) |
💡 小型项目:2核4G;中型:4核8G;大型/高并发:8核16G+,配合负载均衡。
二、操作系统配置推荐
- 推荐系统:Linux(CentOS 7+/Rocky Linux 8+/Ubuntu 20.04+)
- 关闭不必要的服务:如蓝牙、打印服务等
- 优化内核参数(
/etc/sysctl.conf):
# 提高文件句柄数
fs.file-max = 100000
# TCP 优化
net.core.somaxconn = 65535
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
net.core.netdev_max_backlog = 5000
- 文件句柄限制(
/etc/security/limits.conf):
* soft nofile 65535
* hard nofile 65535
三、JVM 配置推荐(以 HotSpot 为例)
1. 推荐 JVM 参数(适用于生产环境)
-Xms4g -Xmx4g # 初始和最大堆内存(建议设置为相等)
-Xmn2g # 年轻代大小(约堆的 1/2)
-XX:MetaspaceSize=256m # 元空间初始大小
-XX:MaxMetaspaceSize=512m # 元空间最大
-XX:+UseG1GC # 推荐使用 G1 垃圾回收器(Java 8+)
-XX:MaxGCPauseMillis=200 # 目标最大 GC 停顿时间
-XX:+ParallelRefProcEnabled # 并行处理软/弱引用
-XX:+HeapDumpOnOutOfMemoryError # OOM 时生成堆转储
-XX:HeapDumpPath=/logs/heapdump.hprof
-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/logs/gc.log
-Djava.security.egd=file:/dev/./urandom # 提速启动(避免阻塞)
⚠️ 注意:避免使用
-XX:+UseConcMarkSweepGC(CMS 已弃用,Java 14+ 移除)
2. Java 版本选择
- 推荐版本:Java 11 或 Java 17(LTS 长期支持版本)
- 避免使用 Java 8(除非必须兼容旧系统,但建议升级)
四、应用服务器部署方式
1. Spring Boot 推荐部署方式
- 打成
jar包,使用java -jar启动 - 使用
systemd管理服务(推荐)
# /etc/systemd/system/myapp.service
[Unit]
Description=My Spring Boot App
After=syslog.target
[Service]
User=myuser
ExecStart=/usr/bin/java -Xms4g -Xmx4g -jar /opt/myapp/app.jar
SuccessExitStatus=143
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
systemctl enable myapp
systemctl start myapp
2. 容器化部署(Docker + Kubernetes)
- 使用轻量基础镜像(如
eclipse-temurin:17-jre-alpine) - 示例 Dockerfile:
FROM eclipse-temurin:17-jre-alpine
COPY app.jar /app.jar
ENTRYPOINT ["java", "-Xms512m", "-Xmx1g", "-jar", "/app.jar"]
五、反向与负载均衡
- Nginx 配置示例(反向 + 静态资源处理):
server {
listen 80;
server_name api.example.com;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# 静态资源缓存
location /static/ {
alias /var/www/static/;
expires 1y;
add_header Cache-Control "public, immutable";
}
}
- 高并发场景:使用 Nginx + Keepalived 实现高可用,或使用云负载均衡(如 AWS ALB、阿里云 SLB)
六、数据库与缓存配置
- 数据库:
- MySQL 推荐配置:连接池(HikariCP)、最大连接数 100~200
- 开启慢查询日志、定期优化表
- Redis:
- 使用持久化(RDB+AOF)
- 设置最大内存
maxmemory 4gb,淘汰策略allkeys-lru
- 连接池(如 HikariCP)推荐配置:
spring.datasource.hikari.maximum-pool-size=20
spring.datasource.hikari.minimum-idle=5
spring.datasource.hikari.connection-timeout=30000
spring.datasource.hikari.idle-timeout=600000
spring.datasource.hikari.max-lifetime=1800000
七、安全配置
- 使用 HTTPS(Let’s Encrypt 免费证书)
- 防火墙(
firewalld或ufw)仅开放必要端口(如 80, 443, 22) - 禁用 SSH 密码登录,使用密钥认证
- 定期更新系统和 Java 依赖(使用
OWASP Dependency-Check扫描漏洞) - 敏感信息使用配置中心(如 Nacos、Consul)或环境变量,避免硬编码
八、监控与日志
- 日志:
- 使用
logback-spring.xml配置日志滚动(按天/大小) - 日志输出到
/logs/app.log,避免占用系统盘
- 使用
- 监控:
- 集成 Prometheus + Grafana(通过
micrometer) - 健康检查:
/actuator/health - APM 工具:SkyWalking、Pinpoint、New Relic
- 集成 Prometheus + Grafana(通过
九、备份与高可用
- 定期备份数据库(每日全备 + binlog 增量)
- 使用 Redis 主从或哨兵模式
- 多节点部署 + 负载均衡(避免单点故障)
- 考虑使用 Kubernetes 实现自动扩缩容(HPA)
总结:推荐配置清单
| 类别 | 推荐方案 |
|---|---|
| 操作系统 | CentOS 8 / Ubuntu 20.04 LTS |
| Java 版本 | Java 11 或 Java 17 |
| JVM GC | G1GC,堆大小合理设置 |
| 部署方式 | JAR + systemd 或 Docker + Kubernetes |
| 反向 | Nginx / HAProxy |
| 数据库 | MySQL 8 + HikariCP |
| 缓存 | Redis(主从/哨兵) |
| 安全 | HTTPS、防火墙、密钥登录 |
| 监控 | Prometheus + Grafana + SkyWalking |
| 日志 | ELK 或 Loki + Promtail |
如果你提供具体的业务场景(如电商、IM、高并发 API 等),我可以进一步给出针对性优化建议。
PHPWP博客