Weblogic线程阻塞解决方案

来源:互联网 发布:千方百剂软件 编辑:程序博客网 时间:2024/06/08 17:46

Weblogic线程阻塞解决方案

今天生产环境下的系统出现以下的错误提示:

<2015-1-6 下午03时02分36秒 CST> <Error> <WebLogicServer> <BEA-000337> <[STUCK] ExecuteThread: '1' for queue: 'weblogic.
ernel.Default (self-tuning)' has been busy for "613" seconds working on the request "weblogic.servlet.internal.ServletR
questImpl@10b183f[
POST /zlpj/cy/renwuRun.action?funcCode=241&bigrenwuid=5781&flag=0&param=0 HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
Referer: http://10.50.162.200/zlpj/cy/listBigRenwu.action?funcCode=241&isQuery=true
Accept-Language: zh-cn
Content-Type: application/x-www-form-urlencoded
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
Content-Length: 999
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: jtotwname=; jtotwpass=; jtotwusercheck=false; jtotwpscheck=false; BIGipServerweb_pool=3349295626.45083.0000; JS
SSIONID=jrSvJr0RHZCYbkw6JMZMwNnd2PrDfrJV6wTPqvTPb1Vp4rd4Vz92!969806071
]", which is more than the configured time (StuckThreadMaxTime) of "600" seconds. Stack trace:
        java.net.SocketInputStream.socketRead0(Native Method)
        java.net.SocketInputStream.read(SocketInputStream.java:129)
        oracle.net.ns.Packet.receive(Packet.java:239)
        oracle.net.ns.DataPacket.receive(DataPacket.java:92)
        oracle.net.ns.NetInputStream.getNextPacket(NetInputStream.java:172)
        oracle.net.ns.NetInputStream.read(NetInputStream.java:117)
        oracle.net.ns.NetInputStream.read(NetInputStream.java:92)
        oracle.net.ns.NetInputStream.read(NetInputStream.java:77)
        oracle.jdbc.driver.T4CMAREngine.unmarshalUB1(T4CMAREngine.java:1023)
        oracle.jdbc.driver.T4CMAREngine.unmarshalSB1(T4CMAREngine.java:999)
        oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:584)
        oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:183)
        oracle.jdbc.driver.T4CStatement.executeForDescribe(T4CStatement.java:774)
        oracle.jdbc.driver.T4CStatement.executeMaybeDescribe(T4CStatement.java:849)
        oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1186)
        oracle.jdbc.driver.OracleStatement.executeQuery(OracleStatement.java:1377)
        oracle.jdbc.driver.OracleStatementWrapper.executeQuery(OracleStatementWrapper.java:386)
        weblogic.jdbc.wrapper.Statement.executeQuery(Statement.java:480)
        org.springframework.jdbc.core.JdbcTemplate$1QueryStatementCallback.doInStatement(JdbcTemplate.java:389)
        org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:342)
        org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:404)
        org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:412)
        org.springframework.jdbc.core.JdbcTemplate.queryForList(JdbcTemplate.java:443)
        com.taiji.cy.spring.service.impl.CyServiceImpl.getXianShiList(CyServiceImpl.java:3724)
        com.taiji.cy.spring.service.impl.CyServiceImpl.updateCyhdXxxx(CyServiceImpl.java:4305)
        com.taiji.cy.spring.service.impl.CyServiceImpl.renwuRunRandom(CyServiceImpl.java:2163)
        com.taiji.cy.spring.service.impl.CyServiceImpl.renwuRunHis(CyServiceImpl.java:2377)
        sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        java.lang.reflect.Method.invoke(Method.java:597)
        org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:296)
        org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:17
)
        org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:144)
        com.taiji.core.service.RecordPermissionInterceptor.invoke(RecordPermissionInterceptor.java:40)
        org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:166)
        org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107)
        org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:166)
        org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
        $Proxy88.renwuRunHis(Unknown Source)
        com.taiji.cy.webwork.action.CyAction.renwuRun(CyAction.java:5626)
        sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        java.lang.reflect.Method.invoke(Method.java:597)
        com.opensymphony.xwork.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:308)
        com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:174)
        com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35)
        com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:172)
        com.taiji.core.webwork.interceptor.PermissionInterceptor.intercept(PermissionInterceptor.java:52)
        com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:172)
        com.taiji.core.webwork.interceptor.SessionInterceptor.intercept(SessionInterceptor.java:37)
        com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:172)
        com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35)
        com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:172)
        com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35)
        com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:172)
        com.opensymphony.webwork.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:71)
        com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:172)
        com.taiji.core.webwork.interceptor.LoginInterceptor.intercept(LoginInterceptor.java:28)
        com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:172)
        com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35)
        com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:172)
        com.opensymphony.xwork.DefaultActionProxy.execute(DefaultActionProxy.java:116)
        com.opensymphony.webwork.dispatcher.ServletDispatcher.serviceAction(ServletDispatcher.java:272)
        com.opensymphony.webwork.dispatcher.ServletDispatcher.service(ServletDispatcher.java:237)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
        weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
        weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
        weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:292)
        weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
        weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
        com.taiji.core.webwork.filter.FieldPermissionFilter.doFilter(FieldPermissionFilter.java:32)
        weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
        org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.jav
:198)
        org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)
        weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
        com.taiji.core.web.filter.EncodingFilter.doFilter(EncodingFilter.java:26)
        weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
        weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3496)
        weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
        weblogic.security.service.SecurityManager.runAs(Unknown Source)
        weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2180)
        weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2086)
        weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1406)
        weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
        weblogic.work.ExecuteThread.run(ExecuteThread.java:173)

>


该问题是由于处理renwuRun.action请求超时引起的,系统配置的处理时间是600s,但是该线程处理超过了600s,仍然没将请求释放,所以报了这个错误。如果发送该请求较多,很有可能会导致weblogic的线程阻塞,严重会引起weblogic挂起现象。 
可以通过以下几种方法解决: 
1)修改StuckThreadMaxTime参数,将默认的600s改成1200s,或者其它适合的值。 
2)增大线程数,防止线程阻塞问题。 
3)优化程序,减少处理时间。
0 0