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升高。
<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升高。
相关文章推荐
- weblogic unable to get file lock问题
- weblogic unable to get file lock问题
- java.base/jdk.internal.loader.ClassLoaders$AppClassLoader cannot be cast to java.base/java.net.URLCl
- weblogic unable to get file lock问题
- 关于mysql中select * for update锁表与Deadlock found when trying to get lock; try restarting transaction
- weblogic unable to get file lock问题
- deadlock found when trying to get lock ;try restarting transaction
- weblogic10.3加载status2报错 unable to attain an URLClassLoader - [unknown location]
- org.junit.platform.commons.util.ReflectionUtils.getDefaultClassLoader()
- mysql innodb 事务操作的表锁及行锁-Deadlock found when trying to get lock; try restarting transaction的优化
- weblogic unable to get file lock问题
- SQLSTATE[40001]: Serialization failure: 1213 Deadlock found when trying to get lock; try restarting
- mysql 死锁 Deadlock found when trying to get lock; t
- org.junit.platform.commons.util.ReflectionUtils.getDefaultClassLoader()Ljava/lang/ClassLoader;
- weblogic启动报<BEA-141281> <unable to get file lock, will retry ...>
- mysql 报ERROR:Deadlock found when trying to get lock; try restarting transaction
- Deadlock found when trying to get lock; try restarting transaction
- InputStream in = JdbcUtils.class.getClassLoader().getResourceAsStream("dbconfig.properties")的作用
- Deadlock found when trying to get lock; try restarting transaction
- Deadlock found when trying to get lock; try restarting transaction