WebLogic作为企业级Java EE应用服务器,其性能调优需结合操作系统层、JVM层、WebLogic配置层及应用层多维度优化。以下是具体调优措施:
操作系统是WebLogic运行的基础,需优化内核参数及资源限制以提升系统吞吐量。
文件描述符限制调整
WebLogic处理大量并发连接时,需增加文件描述符上限。通过ulimit -n查看当前限制(默认通常为1024),修改/etc/security/limits.conf文件,添加以下内容(以weblogic用户为例):
weblogic soft nofile 65535
weblogic hard nofile 65535
若需永久生效,还需修改/etc/pam.d/login文件,添加session required pam_limits.so。
TCP/IP参数优化
调整TCP参数以减少连接建立/关闭的开销,编辑/etc/sysctl.conf文件,添加以下配置:
net.ipv4.tcp_tw_reuse = 1 # 允许重用TIME-WAIT状态的socket
net.ipv4.tcp_fin_timeout = 30 # TIME-WAIT状态超时时间(秒),默认60秒
net.core.somaxconn = 1024 # 监听队列最大长度,默认128
执行sysctl -p使配置生效。
内核参数优化
调整vm.swappiness(减少交换空间使用)、vm.dirty_ratio(控制脏页写入频率),编辑/etc/sysctl.conf:
vm.swappiness = 10 # 值越小,越倾向于使用物理内存(默认60)
vm.dirty_ratio = 10 # 当脏页占比达到10%时,触发写回操作(默认20)
执行sysctl -p生效。
JVM内存设置直接影响WebLogic的稳定性和性能,需合理配置堆内存及垃圾回收策略。
堆内存设置
初始堆内存(-Xms)与最大堆内存(-Xmx)建议设置为相同值(如1024M-4096M),避免堆内存动态扩展带来的性能损耗。若应用为Java 8及以上版本,需设置元空间(替代永久代):
export MEM_ARGS="-Xms2048m -Xmx2048m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m"
修改$DOMAIN_HOME/bin/setDomainEnv.sh文件(或在WebLogic控制台“服务器启动”页面配置)。
垃圾回收策略选择
推荐使用G1垃圾回收器(-XX:+UseG1GC),适用于大内存、低延迟场景。可通过以下参数优化G1行为:
-XX:MaxGCPauseMillis=200 # 目标最大GC停顿时间(毫秒)
-XX:G1HeapRegionSize=4m # 堆区域大小(根据堆大小调整,通常4m-32m)
示例:export MEM_ARGS="-Xms2048m -Xmx2048m -XX:+UseG1GC -XX:MaxGCPauseMillis=200"。
线程池优化
线程池是处理并发请求的核心,需根据应用负载调整线程数。
Thread Count)。
top -H -p <pid>监控线程数)。-Dweblogic.threadpool.MinPoolSize和-Dweblogic.threadpool.MaxPoolSize设置最小/最大线程数(如-Dweblogic.threadpool.MinPoolSize=50 -Dweblogic.threadpool.MaxPoolSize=500)。连接池优化
数据源连接池配置影响数据库访问性能,需合理设置以下参数:
执行队列优化(WebLogic 8.1及以下)
若使用传统执行队列(而非自调优),需修改config.xml文件,添加use81-style-execute-queues元素(设为true),并配置线程数:
<server>
<name>myserver</name>
<use81-style-execute-queues>true</use81-style-execute-queues>
<execute-queue name="weblogic.kernel.Default">
<thread-count>50</thread-count>
</execute-queue>
</server>
修改后重启WebLogic生效。
日志管理
关闭不必要的日志输出,减少磁盘IO。进入WebLogic控制台→“环境”→“服务器”→选中服务器→“配置”→“日志”→“HTTP”→取消“启用HTTP访问日志文件”;调整日志级别(如将DEBUG改为INFO),避免过多日志输出。
SQL优化
SELECT *,只查询必要字段。缓存优化
调优后需通过监控工具验证效果,持续迭代优化:
jstat -gc <pid> 1000监控GC情况,jconsole查看堆内存使用。jstack <pid>查看线程状态,排查死锁或长时间运行的线程。以上调优措施需根据实际应用场景(如并发量、数据库负载、应用类型)灵活调整,建议在测试环境验证后再应用于生产环境。