您的位置:首页 > 其它

Blocked trying to get lock: weblogic.utils.classloaders.ChangeAwareClassLoader

2013-07-15 20:19 323 查看
     最近weblogic应用服务器CPU时常飙高,系统突然会变得缓慢。从错误日志中可以看到stuck线程,还可以看到一个奇怪的错误:

<2013-7-10 下午01时13分28秒 CST> <Error> <WebLogicServer> <BEA-000337> <[STUCK] ExecuteThread: '19' for queue: 'weblogic.kernel.Default (self-tuning)' has been busy for "616" seconds working on the request "Http Request: /web/product/........................do",
which is more than the configured time (StuckThreadMaxTime) of "600" seconds. Stack trace:

Thread-81 "[STUCK] ExecuteThread: '19' for queue: 'weblogic.kernel.Default (self-tuning)'" <alive, in native, suspended, priority=1, DAEMON> {

    java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:93)

    java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:388)

    java.lang.StringBuffer.append(StringBuffer.java:225)

    com.gg.util.StringUtils.replace(StringUtils.java:2866)

    com.gg.util.StringUtils.replace(StringUtils.java:2835)

    com.gg...........................Action.addStyle(..........................Action.java:731)

    com.gg...........................Action.setQueryStyle(..........................Action.java:773)

    ^-- Holding lock: java.lang.StringBuffer@8eeb47b[thin lock]

    com.gg.......................................Action.execute(...........................Action.java:72)

    org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)

    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:217)

    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1481)

    com.gg.struts.action...........ActionServlet.process(GGActionServlet.java:75)

    org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)

    javax.servlet.http.HttpServlet.service(HttpServlet.java:736)

    javax.servlet.http.HttpServlet.service(HttpServlet.java:851)

    weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:224)

    weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:108)

    weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:198)

    weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)

    weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:41)     

      最后找出的问题是stringbuffer的作用域的问题,作用域太大,不断往stringbuffer中塞数据,造成stringbuffer非常大,然后split这个stringbuffer,造成代码中大量的循环,瞬间使CPU升高。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: