ITPub博客

首页 > Linux操作系统 > Linux操作系统 > WebLogic异常分析之资源排队请求

WebLogic异常分析之资源排队请求

原创 Linux操作系统 作者:dodba 时间:2011-03-02 14:47:27 0 删除 编辑
在应用生产中经常会碰到如下故障
中间件为weblogic10
 
<2009-8-5 上午07时06分47秒 GMT+08:00> <[STUCK] ExecuteThread: '11' for queue: 'weblogic.kernel
.Default (self-tuning)' has been busy for "649" seconds working on the request "Http Request: /admin.jsp", which is more than the co
nfigured time (StuckThreadMaxTime) of "600" seconds. Stack trace:
 
该异常出现的原因是资源请求的时间超出了weblogic设定的600s,造成资源排队请求,如果类似的操作很多的话,那么会造成大面积的资源请求队列,从而引起weblogic无法正常提供服务,严重时引起weblogic崩溃。那么这种原因是如何导致的呢?

首先,我们从测试服务器上发现,出现这种情况的原因是因为该请求的时间过长,于是从该请求的数据处理过程入手进行分析,发现该请求的sql语句,在sql/plus下执行时间过长。sql语句如下:
SQL>select v.TODEALTYPE,(select codename  from code d  where d.codetype = 'DM_WSZL' and d.codeno = v.todealtype) TODEALTYPENAME, ( select (cust_name) from pcc_cust_comme c where c.cust_id = v.cust_id_a) CUSTNAME_A , v.TODEALDATE, v.SEATER, v.SWJG_MC, (select codename from code d where d.codetype='DM_WSZL_MENU' and d.codeno=v.todealtype) URL  from PCC_CUST_ORDERHIS v where v.cust_id_a = '0001526357' and rownum < 8 order by  v.TODEALDATE desc
 
该表如果数据很大,在sql/plus下执行时间超长,造成请求weblogic反应时间超出默认值,从而引起资源排队请求的问题,引起服务器不稳定运行。那么出现了这种问题,怎么解决呢?我们的解决方法是对该sql语句进行优化处理:
1:对INFO_SIGN,PPMC等字段建立规范表,从数据库中进行查询,尽量减少in的使用
2:对<>等操作符不使用,使用> or <等方式来代替
3:尽量减少排序order by,rownum的使用,只在关键时刻进行使用,其他时刻能够不使用的就不进行使用。

通过以上方式来减少资源请求时间,从而减少以上异常的发生,来保证服务器的正常运行。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25369863/viewspace-688260/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 文件切割shell
请登录后发表评论 登录
全部评论

注册时间:2011-02-12

  • 博文量
    25
  • 访问量
    76371