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

本文探讨了WebLogic应用服务器CPU使用率异常升高的问题,分析了错误日志中的stuck线程现象,并最终定位到由于StringBuffer作用域不当导致的性能瓶颈。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     最近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升高。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值