1. 定位性能瓶颈
优化前需先明确瓶颈来源,常用工具包括:
2. JVM调优(核心优化方向)
-Xms(初始堆)和-Xmx(最大堆),建议两者值相等(避免堆扩容带来的性能损耗)。例如,-Xms4g -Xmx4g(适用于4GB内存需求的应用);-XX:+UseG1GC启用,可调整-XX:MaxGCPauseMillis(目标最大停顿时间,默认200ms);-XX:+UseZGC启用(JDK 11+支持);-XX:+UseConcMarkSweepGC启用(JDK 14+已移除);-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/path/to/gc.log打印GC详情,便于分析GC频率、停顿时间。3. 代码级优化(减少资源消耗)
new操作),重用对象(如StringBuilder代替字符串拼接),或使用对象池(如数据库连接池、线程池);ArrayList(随机访问快)代替LinkedList(插入删除快)),使用高效的排序算法(如Arrays.sort()(TimSort)代替冒泡排序);StringBuilder(非线程安全,性能更高)或StringBuffer(线程安全);ConcurrentHashMap代替HashMap+synchronized),或采用读写分离锁(如ReentrantReadWriteLock)。4. 系统资源管理(提升整体效率)
free -h显示剩余内存少),升级服务器内存(如从8GB增至16GB),避免频繁使用Swap(虚拟内存,性能远低于物理内存);sudo yum install zram-tools -y && sudo systemctl enable --now zram.service启用ZRAM(压缩内存交换机制),将Swap存储在内存中,减少磁盘I/O;systemctl list-unit-files --type=service查看启动服务,禁用无用服务(如bluetooth、cups),减少系统资源占用(sudo systemctl disable <服务名>);/etc/sysctl.conf,添加以下参数优化网络和内存性能,然后执行sudo sysctl -p生效:net.ipv4.tcp_tw_reuse = 1 # 复用TIME_WAIT状态的TCP连接
net.ipv4.tcp_tw_recycle = 1 # 快速回收TIME_WAIT连接(注意:Linux 4.12+已移除)
net.ipv4.tcp_fin_timeout = 30 # TIME_WAIT状态的超时时间(秒)
net.core.somaxconn = 1024 # 监听队列的最大长度(避免连接拒绝)
net.ipv4.tcp_max_syn_backlog = 8192 # SYN队列的最大长度(避免SYN洪水攻击)
```。
5. 系统配置优化(增强稳定性)
sudo yum update -y更新CentOS系统和所有已安装的软件包(如JDK、数据库),修复已知bug,提升性能和安全性;ext4或XFS文件系统(XFS适合大文件和高并发场景),挂载时添加noatime(不记录文件访问时间)和nodiratime(不记录目录访问时间)选项(减少磁盘I/O)。例如,/etc/fstab中添加:/dev/sda1 / ext4 defaults,noatime,nodiratime 0 1
```;
permissive模式(仅记录违规行为,不阻止),或完全禁用(sudo setenforce 0,需修改/etc/selinux/config中的SELINUX=disabled)。6. 启动优化(缩短启动时间)
@ComponentScan限定扫描范围);-Xshare:on启用类数据共享(CDS),将常用类加载到共享内存中,减少JVM实例间的类重复加载(适用于多个JVM实例的场景)。7. 监控与持续优化(动态调整)
GCViewer工具分析GC日志,判断GC频率、停顿时间是否合理(如老年代GC停顿时间过长,可能需要调整-XX:MaxGCPauseMillis或更换垃圾回收器)。