运行Java Web应用时,选择Linux服务器需要注意以下关键配置,以确保性能、安全和可维护性:
一、系统基础配置
-
内核参数优化
- 文件描述符限制:
/etc/security/limits.conf - soft nofile 65535
- hard nofile 65535
- TCP/IP参数调整:
/etc/sysctl.confnet.core.somaxconn = 65535 net.ipv4.tcp_max_syn_backlog = 65535 vm.swappiness = 10
- 文件描述符限制:
-
时区与时间同步
# 设置时区 timedatectl set-timezone Asia/Shanghai # 启用NTP同步 systemctl enable chronyd
二、Java环境配置
-
JDK版本选择
- 生产环境推荐LTS版本(JDK 11/17/21)
- 使用OpenJDK或Oracle JDK,注意许可证差异
-
JVM参数优化
# 基础配置示例 -Xms4g -Xmx4g # 堆内存设置 -XX:MaxMetaspaceSize=512m -XX:+UseG1GC # G1垃圾回收器 -XX:MaxGCPauseMillis=200
三、Web服务器配置
-
Tomcat优化(如使用)
<!-- server.xml 连接器配置 --> <Connector port="8080" maxThreads="500" minSpareThreads="25" acceptCount="1000"/> -
Nginx反向XX(推荐)
upstream app_server { server 127.0.0.1:8080; keepalive 32; } location / { proxy_set_header X-Real-IP $remote_addr; proxy_connect_timeout 30s; }
四、安全配置
-
防火墙设置
# 只开放必要端口 firewall-cmd --permanent --add-port=80/tcp firewall-cmd --permanent --add-port=443/tcp -
用户权限
- 使用非root用户运行Java进程
- 设置适当的文件权限
-
SSL/TLS配置
- 使用Let’s Encrypt或商业证书
- 定期更新证书
五、监控与日志
-
日志管理
# 日志轮转配置 /etc/logrotate.d/tomcat /var/log/tomcat/*.log { daily rotate 30 compress } -
监控工具
- JVM监控:VisualVM、JConsole
- 系统监控:Prometheus + Grafana
- APM工具:SkyWalking、Pinpoint
六、部署与维护
-
部署策略
- 使用Docker容器化部署
- 配置CI/CD流水线
- 蓝绿部署或滚动更新
-
备份策略
- 应用配置备份
- 数据库定期备份
- 日志归档
七、性能调优建议
-
根据应用特点调整
- CPU密集型:优化线程池配置
- I/O密集型:调整NIO配置
- 内存消耗大:合理设置堆外内存
-
压测验证
- 使用JMeter或wrk进行压力测试
- 监控GC情况和内存泄漏
八、推荐工具栈
- 操作系统:CentOS 7+/Ubuntu 20.04+
- JDK:OpenJDK 11/17
- Web服务器:Tomcat 9+/Undertow
- 反向XX:Nginx
- 监控:Prometheus + Grafana + ELK
根据具体应用规模(小型/中型/大型)和业务需求,这些配置需要相应调整。建议先在测试环境验证配置,再部署到生产环境。
CLOUD技术笔记