CentOS 上 Java 运行环境的优化路径
一 基础准备与版本管理
sudo alternatives --config java 交互选择;或写入 /etc/profile.d/java.sh 设置 JAVA_HOME 与 PATH 实现脚本化切换。java -version、javac -version、ls /usr/lib/jvm/ 确认安装与路径。二 系统层面优化
fs.file-max、nofile(建议不低于 65536),net.core.somaxconn、net.ipv4.tcp_max_syn_backlog 提升到 1024~8192 区间。net.ipv4.ip_local_port_range = 1024 65535,net.ipv4.tcp_fin_timeout = 30。net.ipv4.tcp_tw_reuse = 1;在 NAT/负载均衡 场景慎用 tcp_tw_recycle。sudo sysctl -p。三 JVM 调优要点
-Xms 与 -Xmx(如 -Xms8g -Xmx8g)。-Xss512k~1m。-XX:+UseG1GC;按需调节停顿目标 -XX:MaxGCPauseMillis=200。-Xmn 直接设定新生代,或用 -XX:NewRatio=N 控制 Young:Old 比例;用 -XX:SurvivorRatio 调整 Eden:S0:S1。-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/var/log/app/gc.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=100M。-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/app/heap.hprof。-Xms8g -Xmx8g -Xss1m -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:InitiatingHeapOccupancyPercent=45 -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/var/log/app/gc.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=100M -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/app/heap.hprof四 监控 压测 与持续优化
jstat -gc/-gcutil <pid> <interval>,jstack <pid> 查线程与锁,jmap -dump:format=b,file=heap.hprof <pid> 导出堆;配合 VisualVM/JProfiler 做实时分析。五 常见陷阱与修正
-Xms 与 -Xmx 设为不同值会导致运行期堆扩缩容,带来抖动;建议等值。-Xms/-Xmx。tcp_tw_recycle 可能与 NAT/负载均衡冲突,出现连接异常;优先 tcp_tw_reuse 并控制 tcp_fin_timeout。