Linux环境下WebLogic性能调优指南
WebLogic Server的性能调优是一个涵盖操作系统、JVM、连接池、线程、应用代码及监控的系统性工程,需结合Linux特性与WebLogic自身机制逐步优化。以下是具体实施路径:
Linux默认文件描述符限制(1024)无法满足高并发需求,需调整为更大值:
ulimit -n 65535(仅当前会话有效);/etc/security/limits.conf,添加* soft nofile 65535、* hard nofile 65535(对所有用户生效)。调整TCP内核参数以提升网络吞吐与连接处理能力:
/etc/sysctl.conf,添加以下参数:net.ipv4.tcp_tw_reuse = 1 # 复用TIME_WAIT状态的连接(减少连接建立开销)
net.ipv4.tcp_fin_timeout = 30 # TIME_WAIT状态超时时间(默认60s,缩短至30s)
net.core.somaxconn = 1024 # 监听队列最大长度(默认128,避免连接拒绝)
net.ipv4.tcp_keepalive_time = 1800 # 空闲连接探测间隔(默认7200s,缩短至1800s)
net.ipv4.tcp_keepalive_probes = 3 # 探测失败次数(默认5次,减少等待时间)
net.ipv4.tcp_keepalive_intvl = 15 # 探测间隔(默认75s,缩短至15s)
sysctl -p使配置生效。-Xms)与最大堆(-Xmx)设置为相同值(如-Xms4g -Xmx4g),避免堆内存动态扩展带来的性能波动;-XX:NewRatio=4,表示新生代占堆的1/5,适合短生命周期对象多的场景);-XX:+UseG1GC),通过分区回收减少停顿时间;-XX:+UseParallelGC),适合批处理场景;-XX:ParallelGCThreads=8,等于CPU物理核心数)。-XX:+UnlockCommercialFeatures -XX:+ResourceManagement,限制WebLogic实例的资源使用(如CPU、内存);-XX:-UseBiasedLocking,减少无竞争场景下的同步开销。weblogic.kernel.Default线程池(默认15个线程):根据并发请求数设置Thread Count(如100-200),避免线程阻塞导致的请求堆积;Self-Tuning),可根据负载动态调整线程数。Initial Capacity等于Maximum Capacity(如100),避免运行时动态创建连接的开销;Test Connections on Reserve(默认开启),改为通过Test Frequency(如10秒)定期测试连接有效性,减少每次获取连接的测试成本;Statement Cache Size(默认10),缓存PreparedStatement对象,减少数据库解析SQL的开销(需数据库驱动支持)。JSP Page Check Secs为-1,避免每次请求都检查JSP文件是否修改;Servlet Reload Check Secs为-1,避免Servlet类被频繁重新加载;weblogic.appc工具提前编译JSP,减少运行时编译开销。try-with-resources或finally块确保ResultSet、Statement、Connection按顺序关闭;PreparedStatement.addBatch()与executeBatch()处理批量插入/更新,减少数据库交互次数;SELECT *,使用索引覆盖查询,减少数据传输量。WL-Cache或第三方缓存(如Redis)缓存数据库查询结果、JNDI对象等,减少重复计算;response.setBufferSize()(如8KB)设置HTTP响应缓冲区大小,减少网络传输次数。jstat -gcutil <pid> 1000监控GC频率与停顿时间,jmap -heap <pid>查看堆内存分布,jstack <pid>分析线程阻塞情况;以上调优措施需结合应用特点(如高并发、大数据量)与硬件资源(如CPU、内存)灵活调整,建议在测试环境充分验证后再应用于生产环境。