硬件资源评估与扩容
根据应用负载类型(CPU密集型/IO密集型)调整硬件配置:CPU密集型应用增加CPU核心数(建议至少4核以上),IO密集型应用使用SSD替代HDD(提升磁盘IO速度),内存不足时扩展物理内存(建议不低于8GB)。定期通过top、free -m、iostat -x 1命令监控资源使用率,识别瓶颈。
内核参数调优
/etc/security/limits.conf,添加* soft nofile 65535、* hard nofile 65535(增加单个进程可打开的文件数);临时生效用ulimit -n 65535。/etc/sysctl.conf,添加net.ipv4.tcp_tw_reuse = 1(允许TIME_WAIT状态的连接被重用,减少连接建立开销)、net.ipv4.tcp_fin_timeout = 30(缩短TIME_WAIT状态的超时时间)、net.core.somaxconn = 1024(增加TCP连接队列长度,避免连接拒绝)。执行sysctl -p使配置生效。/etc/sysctl.conf,设置vm.swappiness = 10(降低系统对Swap分区的依赖,优先使用物理内存),减少IO瓶颈。CentOS系统服务优化
关闭不必要的系统服务(如postfix邮件服务、bluetooth蓝牙服务、cups打印服务),使用systemctl disable <service_name>命令禁用,减少系统资源占用。
内存参数配置
通过setDomainEnv.sh(位于WL_HOME/bin目录)或WebLogic控制台设置JVM内存:
-Xms)与最大堆大小(-Xmx)设置为相同值(如-Xms2048m -Xmx2048m),避免堆内存动态扩展带来的性能损耗。-XX:PermSize=512m -XX:MaxPermSize=512m;Java 8及以上版本设置-XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m(避免元空间溢出)。setDomainEnv.sh):export MEM_ARGS="-Xms2048m -Xmx2048m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m"
```。
垃圾回收器选择
优先使用G1垃圾回收器(适用于大内存应用),添加参数-XX:+UseG1GC;若需低延迟,可调整G1参数:-XX:MaxGCPauseMillis=200(目标最大GC停顿时间,单位毫秒)、-XX:InitiatingHeapOccupancyPercent=45(触发并发GC的堆占用率阈值)。
线程池调优
环境→服务器→<服务器名称>→配置→队列→weblogic.kernel.Default)调整Thread Count(线程数)。默认生产模式为25,可根据CPU核心数调整(建议为CPU核心数×2 + 1,如4核CPU设置为9),避免线程过多导致上下文切换开销。-Dweblogic.threadpool.MinPoolSize=100 -Dweblogic.threadpool.MaxPoolSize=500(设置线程池最小/最大线程数),让系统根据负载动态调整。StuckThreadMaxTime参数(默认600秒),设置为1200秒(如setDomainEnv.sh中添加-Dweblogic.StuckThreadMaxTime=1200),避免因长时间运行的线程导致线程池耗尽。连接池优化
调整JDBC连接池参数(通过控制台服务→数据源→<数据源名称>→配置→连接池):
连接超时设置为30秒(等待数据库连接的最长时间)、非活动超时设置为60秒(空闲连接回收时间)。本地I/O与Native包
启用WebLogic的本地I/O库(如NativeIOEnabled=true,通过控制台环境→服务器→<服务器名称>→配置→一般→高级设置),提高套接字复用效率;若有高性能IO需求,安装WebLogic Native Performance Pack(提升IO处理能力)。
日志与调试信息
关闭不必要的日志输出(如Log4j的DEBUG级别),通过控制台环境→服务器→<服务器名称>→日志→日志级别调整;移除代码中的System.out.println语句(同步输出会阻塞线程),使用异步日志框架(如Logback)。
应用部署配置
部署→<应用名称>→配置→重新加载,设置重新加载检查间隔为0(生产环境禁用自动重新加载,避免不必要的类加载开销);JSP页检查时间为-1(禁用自动检查JSP修改,减少编译开销);<load-on-startup>1</load-on-startup>(启动时初始化,避免每次请求创建实例)。内置监控工具
使用WebLogic控制台的监控→服务器→<服务器名称>→性能页面,监控线程池(队列长度应为0,表示无等待请求)、内存(堆内存使用率不超过80%)、连接池(活跃连接数不超过最大容量的80%)等指标。
第三方工具
使用Oracle Enterprise Manager(OEM)或VisualVM监控JVM内存、线程状态;使用jstat -gcutil <pid> 1000(每秒输出GC情况)、jstack <pid>(查看线程堆栈,分析死锁或阻塞)等命令定位性能瓶颈。