centos环境weblogic性能优化方法
CentOS环境下WebLogic性能优化方法
一、系统级基础优化
-
硬件资源评估与扩容
根据应用负载类型(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
。 - TCP/IP参数:修改
/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
使配置生效。 - Swappiness调整:修改
/etc/sysctl.conf
,设置vm.swappiness = 10
(降低系统对Swap分区的依赖,优先使用物理内存),减少IO瓶颈。
- 文件描述符限制:修改
-
CentOS系统服务优化
关闭不必要的系统服务(如postfix
邮件服务、bluetooth
蓝牙服务、cups
打印服务),使用systemctl disable < service_name>
命令禁用,减少系统资源占用。
二、JVM内存优化
-
内存参数配置
通过setDomainEnv.sh
(位于WL_HOME/bin
目录)或WebLogic控制台设置JVM内存:- 堆内存:将初始堆大小(
-Xms
)与最大堆大小(-Xmx
)设置为相同值(如-Xms2048m -Xmx2048m
),避免堆内存动态扩展带来的性能损耗。 - 永久代/元空间:Java 7及之前版本设置
-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服务器配置优化
-
线程池调优
- 默认执行队列:通过WebLogic控制台(
环境→服务器→< 服务器名称> →配置→队列→weblogic.kernel.Default
)调整Thread Count
(线程数)。默认生产模式为25,可根据CPU核心数调整(建议为CPU核心数×2 + 1
,如4核CPU设置为9),避免线程过多导致上下文切换开销。 - 自调优线程池:WebLogic 9及以上版本支持自调优线程池,可通过启动脚本添加
-Dweblogic.threadpool.MinPoolSize=100 -Dweblogic.threadpool.MaxPoolSize=500
(设置线程池最小/最大线程数),让系统根据负载动态调整。 - StuckThread处理:修改
StuckThreadMaxTime
参数(默认600秒),设置为1200秒(如setDomainEnv.sh
中添加-Dweblogic.StuckThreadMaxTime=1200
),避免因长时间运行的线程导致线程池耗尽。
- 默认执行队列:通过WebLogic控制台(
-
连接池优化
调整JDBC连接池参数(通过控制台服务→数据源→< 数据源名称> →配置→连接池
):- 初始容量:设置为5-10(避免启动时大量连接创建);
- 最大容量:根据数据库承受能力设置(如Oracle数据库建议不超过50);
- 容量增长:设置为1-5(每次增加的连接数,避免一次性创建过多连接);
- 超时设置:
连接超时
设置为30秒(等待数据库连接的最长时间)、非活动超时
设置为60秒(空闲连接回收时间)。
-
本地I/O与Native包
启用WebLogic的本地I/O库(如NativeIOEnabled=true
,通过控制台环境→服务器→< 服务器名称> →配置→一般→高级
设置),提高套接字复用效率;若有高性能IO需求,安装WebLogic Native Performance Pack(提升IO处理能力)。
四、应用层优化
-
日志与调试信息
关闭不必要的日志输出(如Log4j
的DEBUG
级别),通过控制台环境→服务器→< 服务器名称> →日志→日志级别
调整;移除代码中的System.out.println
语句(同步输出会阻塞线程),使用异步日志框架(如Logback)。 -
应用部署配置
- Servlet重新加载:通过控制台
部署→< 应用名称> →配置→重新加载
,设置重新加载检查间隔
为0(生产环境禁用自动重新加载,避免不必要的类加载开销); - JSP编译:设置
JSP页检查时间
为-1(禁用自动检查JSP修改,减少编译开销); - 单线程Servlet:对不需要并发处理的Servlet,添加
< load-on-startup> 1< /load-on-startup>
(启动时初始化,避免每次请求创建实例)。
- Servlet重新加载:通过控制台
五、监控与持续优化
-
内置监控工具
使用WebLogic控制台的监控→服务器→< 服务器名称> →性能
页面,监控线程池(队列长度
应为0,表示无等待请求)、内存(堆内存使用率
不超过80%)、连接池(活跃连接数
不超过最大容量的80%)等指标。 -
第三方工具
使用Oracle Enterprise Manager(OEM)或VisualVM监控JVM内存、线程状态;使用jstat -gcutil < pid> 1000
(每秒输出GC情况)、jstack < pid>
(查看线程堆栈,分析死锁或阻塞)等命令定位性能瓶颈。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos环境weblogic性能优化方法
本文地址: https://pptw.com/jishu/718988.html