Ubuntu上WebLogic性能调优技巧
Ubuntu默认文件描述符限制(1024)无法满足WebLogic高并发需求,需调整为更大值。临时生效可执行ulimit -n 65535(仅当前会话有效);永久生效需编辑/etc/security/limits.conf,添加* soft nofile 65535、* hard nofile 65535(对所有用户生效)。同时,检查/etc/security/limits.d/90-nproc.conf中的max user processes(如* soft nproc 5000),确保线程数限制满足需求。
调整TCP内核参数以提升网络吞吐与连接处理能力。编辑/etc/sysctl.conf,添加以下关键参数:
net.ipv4.tcp_tw_reuse = 1:复用TIME_WAIT状态的连接,减少连接建立开销;net.ipv4.tcp_fin_timeout = 30:缩短TIME_WAIT状态超时时间(默认60s);net.core.somaxconn = 1024:增大监听队列最大长度(默认128),避免连接拒绝;net.ipv4.tcp_keepalive_time = 1800:缩短空闲连接探测间隔(默认7200s)。sysctl -p使配置生效。将初始堆(-Xms)与最大堆(-Xmx)设置为相同值(如-Xms4g -Xmx4g),避免堆内存动态扩展带来的性能波动。根据服务器物理内存调整,建议不超过物理内存的70%(如16GB内存可设置-Xms8g -Xmx8g)。
-XX:+UseG1GC),通过分区回收减少停顿时间;高吞吐需求(如批处理)推荐使用Parallel GC(-XX:+UseParallelGC)。-XX:NewRatio=4,表示新生代占堆的1/5,适合短生命周期对象多的场景)。-XX:ParallelGCThreads=8,等于CPU物理核心数),提升GC效率。-XX:+UnlockCommercialFeatures -XX:+ResourceManagement,限制WebLogic实例的CPU、内存使用;-XX:-UseBiasedLocking,减少无竞争场景下的同步开销。weblogic.kernel.Default线程池(默认15个线程):根据并发请求数设置Thread Count(如100-200),避免线程阻塞导致的请求堆积。可通过WebLogic控制台(域 > 服务器 > server实例 > Execute Queue > weblogic.kernel.Default)修改,或编辑setDomainEnv.sh添加-Dweblogic.threadpool.MinThreads=100 -Dweblogic.threadpool.MaxThreads=200。Initial Capacity(初始连接数,如10)、Max Capacity(最大连接数,如50),根据应用并发需求调整,避免连接池过小导致等待或过大浪费资源。Inactive Connection Timeout(非活动连接超时,如30s)、Statement Cache Size(语句缓存大小,如20),减少无效连接占用和重复SQL解析开销。域 > 服务器 > server实例 > 配置 > 调整)选择“启用本地I/O”,减少网络I/O开销,提升数据传输效率。域 > 配置 > 常规,勾选“产品模式”),提升性能与安全性。addBatch()与executeBatch(),减少数据库交互次数。对于耗时操作(如发送邮件、调用第三方接口),使用异步处理(如@Async注解、消息队列)替代同步调用,避免阻塞请求线程,提升系统并发能力。
域 > 监控 > 性能)监控线程池、连接池、JVM内存等指标;WARN或ERROR,避免DEBUG级别日志过多占用磁盘空间;