CentOS上优化Java应用性能可从系统、JVM、代码及监控等多方面入手,以下是关键配置建议:
内核参数调优
/etc/sysctl.conf,优化网络及内存管理参数:net.ipv4.tcp_tw_reuse=1 # 复用TIME_WAIT连接
net.ipv4.tcp_max_syn_backlog=8192 # 增大SYN队列
vm.swappiness=10 # 降低内存交换倾向
执行sysctl -p使配置生效。文件系统优化
ext4或XFS文件系统,挂载时添加noatime选项减少磁盘I/O:mount -o remount,noatime /dev/sda1 /
资源限制调整
ulimit -n 65535
永久生效需修改/etc/security/limits.conf。内存配置
-Xms)和最大堆(-Xmx)为相同值(如-Xms4g -Xmx4g),避免动态调整开销。-XX:NewRatio=2(默认,新生代占1/3堆)。垃圾回收器选择
-XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:InitiatingHeapOccupancyPercent=45
(G1通过分Region减少Full GC停顿)。-XX:+UseParallelGC -XX:ParallelGCThreads=CPU核心数
```。
性能监控参数
-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/path/to/gc.log。-XX:+TraceClassLoading。减少对象创建
StringBuilder替代字符串拼接,避免循环内频繁创建临时对象。HikariCP数据库连接池)复用资源。算法与数据结构优化
ArrayList替代LinkedList(随机访问场景)。并发编程优化
ConcurrentHashMap替代synchronized块,减少锁竞争。性能分析工具
jstat -gc <pid>(查看GC情况)、top(CPU/内存占用)。jmap -dump:format=b,file=heap.hprof <pid>,配合MAT工具定位内存泄漏。日志管理
AsyncLogger),减少IO阻塞。JVM启动参数优化
JAVA_OPTS环境变量统一配置参数,例如在/etc/profile中添加:export JAVA_OPTS="-Xms4g -Xmx4g -XX:+UseG1GC"
```。
定期维护
注意事项:
参考来源: