weblogic "ThreadPool has stuck threads" 异常处理

【异常日志】:

<2014-12-23
 上午09时58分33秒 CST> <Error> <WebLogicServer> 
<BEA-000337> <[STUCK] ExecuteThread: '1' for queue: 
'weblogic.kernel.Default (self-tuning)' has been busy for "603" seconds 
working on the request 
"weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl@a738be", which 
is more than the configured time (StuckThreadMaxTime) of "600" seconds. 
Stack trace:
        oracle.jdbc.driver.PhysicalConnection.rollback(PhysicalConnection.java:3447)
        weblogic.jdbc.wrapper.Connection.forcedCleanup(Connection.java:151)
        weblogic.common.resourcepool.ResourcePoolImpl.timeoutInactiveResources(ResourcePoolImpl.java:1933)
        weblogic.common.resourcepool.ResourcePoolImpl.access$600(ResourcePoolImpl.java:40)
        weblogic.common.resourcepool.ResourcePoolImpl$ResourcePoolMaintanenceTask.timerExpired(ResourcePoolImpl.java:2411)
        weblogic.timers.internal.TimerImpl.run(TimerImpl.java:273)
        weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:528)
        weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
        weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
>

【原因分析】:

1、线程执行时间过长,出现阻塞问题,分析日志查看出现的问题的线程类名。

2、sql语句执行时间过长。


【解决方法】:

可以通过以下几种方法解决:
1)修改StuckThreadMaxTime参数,将默认的600s改成1200s,或者其它适合的值。
2)增大线程数,防止线程阻塞问题。
3)优化程序,减少处理时间。


对sql语句进行优化处理:
1)对INFO_SIGN,PPMC等字段建立规范表,从数据库中进行查询,尽量减少in的使用
2)对<>等操作符不使用,使用> or <等方式来代替
3)尽量减少排序order by,rownum的使用,只在关键时刻进行使用,其他时刻能够不使用的就不进行使用。


转载于:https://my.oschina.net/u/225084/blog/363448

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值