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"
```。
定期维护
注意事项:
参考来源: