CentOS 上 Java 网络优化实操指南
一 系统层优化
sysctl -p 生效。sudo sysctl -pss -s、netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'、cat /proc/sys/fs/file-maxnet.ipv4.tcp_tw_recycle 已被移除或不推荐;如存在 NAT/跨机房负载均衡,启用 tcp_tw_reuse 也可能带来时间戳错乱风险,需先灰度验证。二 Java 应用层优化
-Dsun.net.client.defaultConnectTimeout=**5000** -Dsun.net.client.defaultReadTimeout=**5000**-Dhttp.keepAlive=**true** -Dhttp.maxConnections=**100** -Dhttp.connectionTimeout=**5000**InetAddress.getLocalHost().getHostName() 高延迟:确保 /etc/hosts 包含本机名映射,且 /etc/nsswitch.conf 为 hosts: files dns myhostname;必要时使用 -Djava.net.preferIPv4Stack=**true**-Dsun.net.inetaddr.ttl=**60** -Dsun.net.inetaddr.negative.ttl=**10**export http_proxy=http://proxy:8080 https_proxy=https://proxy:8080-Dhttp.proxyHost=proxy -Dhttp.proxyPort=8080 -Dhttps.proxyHost=proxy -Dhttps.proxyPort=8080-Djavax.net.ssl.trustStore=/path/to/truststore.jks -Djavax.net.ssl.trustStorePassword=**pwd**-Djavax.net.ssl.keyStore=/path/to/keystore.jks -Djavax.net.ssl.keyStorePassword=**pwd**-Xmx6g -Xms6g -Dsun.net.client.defaultConnectTimeout=5000 -Dsun.net.client.defaultReadTimeout=5000 -Dhttp.keepAlive=true -Dhttp.maxConnections=100 -Dsun.net.inetaddr.ttl=60 -Dsun.net.inetaddr.negative.ttl=10 -Djava.net.preferIPv4Stack=true -jar app.jar三 容器与防火墙网络
firewall-cmd --permanent --add-port=**8080**/tcp && firewall-cmd --reloadausearch -m avc -ts recent 或 journalctl -xe | grep deniedsetenforce 0 影响安全基线。四 监控与问题定位
ss -s、ss -lntp | grep java、netstat -tulpen | grep javaip -s link show、netstat -s | egrep 'retrans|drop'tcpdump -i eth0 -nn port **8080** -w app.pcapdig +short your.domain、nslookup your.domain、time getent hosts your.domainInetAddress.getLocalHost().getHostName() 耗时,核对 /etc/hosts 与 /etc/nsswitch.conf 配置。五 安全与风险提示
tcp_tw_reuse/tcp_tw_recycle 等选项,避免时间戳与序列号相关问题。