[mayaa-user:881] mayaa1.1.19でスレッドロックが発生する現象について
[E-MAIL ADDRESS DELETED]
[E-MAIL ADDRESS DELETED]
2010年 1月 13日 (水) 09:22:23 JST
佐々木と申します。
mayaaのソースPageImpl.javaの140行目(下記プログラム1)の部分で、アプリケーションの全てのスレッドが停止してしまう現象が発生しました。
スレッドが止まった大元は、下記スレッドダンプ1、スレッドダンプ2の内容から、EngineImpl.javaの609行目で止まっている旨のスレッドダンプが出てました。
1年以上運用しているアプリケーションで、ライブラリのアップデートも行っていませんが、障害が内存していたのかと思いますが最近の一ヶ月で2回同障害が発生しました。
本障害を解消するための方法はありますでしょうか?
mayaa+HTMLの書き方に起因しているとか、ライブラリのアップデートで解消できるなど、情報がありましたらご教示ください。
よろしくお願いいたします。
[環境]
・Weblogic9.2MP2
・S2 2.3.17 + S2Struts 1.2.9 + mayaa1.1.19
■プログラム1
org/seasar/mayaa/impl/engine/PageImpl#getTemplateFromFixedSuffix (PageImpl.java:140)
134 protected Template getTemplateFromFixedSuffix(
135 String suffix, String extension) {
136 if (suffix == null || extension == null) {
137 throw new IllegalArgumentException();
138 }
139 Engine engine = ProviderUtil.getEngine();
140 synchronized (engine) {
141 String systemID = engine.getTemplateID(this, suffix, extension);
142 Template template = findTemplateFromCache(systemID);
143 if (template != null) {
144 if (template.getSource().exists()) {
145 return template;
146 }
147 return null;
148 }
149 return engine.createTemplateInstance(this, suffix, extension);
150 }
151 }
■プログラム2
org/seasar/mayaa/impl/engine/EngineImpl.getTemplateID(EngineImpl.java:609)
608 public String getTemplateID(Page page, String suffix, String extension) {
609 StringBuffer name = new StringBuffer(page.getPageName());
610 if (StringUtil.hasValue(suffix)) {
611 String separator = getSuffixSeparator();
612 name.append(separator).append(suffix);
613 }
614 if (StringUtil.hasValue(extension)) {
615 name.append(".").append(extension);
616 }
617 return name.toString();
618 }
■スレッドダンプ1 - スレッド77が原因でスレッドが停止しているメッセージ(ExecuteThread: '8'の内容は下記スレッドダンプ3にあり)
Chain 8:
"[STUCK] ExecuteThread: '8' for queue: 'weblogic.kernel.Default (self-tuning)'" id=73 idx=0xac tid=23579 waiting for org/seasar/mayaa/impl/engine/[E-MAIL ADDRESS DELETED] held by:
"[STUCK] ExecuteThread: '77' for queue: 'weblogic.kernel.Default (self-tuning)'" id=338 idx=0x1b4 tid=409 in chain 5
■スレッドダンプ2 - 止まっているスレッド
"[STUCK] ExecuteThread: '77' for queue: 'weblogic.kernel.Default (self-tuning)'" id=338 idx=0x1b4 tid=409 prio=1 alive, in native, native_blocked, daemon
at jrockit/vm/Allocator.nativeGetNewTLA()I(Native Method)
at jrockit/vm/Allocator.getNewTLAAndAlloc(IIIZ)Ljava/lang/Object;(Unknown Source)[optimized]
at jrockit/vm/Allocator.prepareNextChunkAndAlloc(IIII)Ljava/lang/Object;(Unknown Source)[inlined]
at jrockit/vm/Allocator.getMoreMemoryAndAlloc(IIIIZ)Ljava/lang/Object;(Unknown Source)[optimized]
at java/lang/AbstractStringBuilder.<init>(AbstractStringBuilder.java:44)[inlined]
at java/lang/StringBuffer.<init>(StringBuffer.java:104)[inlined]
at org/seasar/mayaa/impl/engine/EngineImpl.getTemplateID(EngineImpl.java:609)[optimized]
at org/seasar/mayaa/impl/engine/PageImpl.getTemplateFromFixedSuffix(PageImpl.java:141)[optimized]
^-- Holding lock: org/seasar/mayaa/impl/engine/[E-MAIL ADDRESS DELETED][fat lock]
at org/seasar/mayaa/impl/engine/PageImpl.getTemplate(PageImpl.java:163)[optimized]
at org/seasar/mayaa/impl/engine/RenderUtil.getTemplate(RenderUtil.java:298)[optimized]
at org/seasar/mayaa/impl/engine/RenderUtil.renderPage(RenderUtil.java:333)[inlined]
at org/seasar/mayaa/impl/engine/processor/InsertProcessor.doStartProcess(InsertProcessor.java:327)[optimized]
at org/seasar/mayaa/impl/engine/RenderUtil.renderTemplateProcessor(RenderUtil.java:134)[optimized]
at org/seasar/mayaa/impl/engine/RenderUtil.renderTemplateProcessorChildren(RenderUtil.java:208)[inlined]
at org/seasar/mayaa/impl/engine/RenderUtil.renderTemplateProcessor(RenderUtil.java:147)[inlined]
at org/seasar/mayaa/impl/engine/RenderUtil.renderTemplateProcessorChildren(RenderUtil.java:208)[optimized]
at org/seasar/mayaa/impl/engine/RenderUtil.renderTemplateProcessor(RenderUtil.java:147)[optimized]
at org/seasar/mayaa/impl/engine/RenderUtil.renderTemplateProcessorChildren(RenderUtil.java:208)[optimized]
at org/seasar/mayaa/impl/engine/RenderUtil.renderTemplateProcessor(RenderUtil.java:147)[inlined]
at org/seasar/mayaa/impl/engine/RenderUtil.renderProcessorTree(RenderUtil.java:263)[inlined]
at org/seasar/mayaa/impl/engine/TemplateImpl.doTemplateRender(TemplateImpl.java:203)[optimized]
at org/seasar/mayaa/impl/engine/PageImpl.renderTemplate(PageImpl.java:242)[inlined]
at org/seasar/mayaa/impl/engine/RenderUtil.renderPage(RenderUtil.java:348)[inlined]
at org/seasar/mayaa/impl/engine/PageImpl.doPageRender(PageImpl.java:190)[optimized]
at org/seasar/mayaa/impl/engine/EngineImpl.doPageService(EngineImpl.java:368)[optimized]
at org/seasar/mayaa/impl/engine/EngineImpl.doService(EngineImpl.java:490)[optimized]
at org/seasar/mayaa/impl/MayaaServlet.doService(MayaaServlet.java:97)[inlined]
at jp/co/****/*******/core/MayaaServletEx.doService(MayaaServletEx.java:56)[inlined]
at org/seasar/mayaa/impl/MayaaServlet.doGet(MayaaServlet.java:80)[inlined]
at jp/co/****/*******/core/MayaaServletEx.doGet(MayaaServletEx.java:42)[optimized]
at javax/servlet/http/HttpServlet.service(HttpServlet.java:743)[optimized]
at javax/servlet/http/HttpServlet.service(HttpServlet.java:856)[optimized]
at weblogic/servlet/internal/StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)[optimized]
at weblogic/servlet/internal/StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)[inlined]
at weblogic/servlet/internal/ServletStubImpl.execute(ServletStubImpl.java:283)[optimized]
at weblogic/servlet/internal/ServletStubImpl.execute(ServletStubImpl.java:175)[inlined]
at weblogic/servlet/internal/RequestDispatcherImpl.invokeServlet(RequestDispatcherImpl.java:525)[optimized]
at weblogic/servlet/internal/RequestDispatcherImpl.forward(RequestDispatcherImpl.java:261)[optimized]
at jp/co/****/*******/common/urlconv/ReplaceTextFilter.doFilter(ReplaceTextFilter.java:330)[optimized]
at weblogic/servlet/internal/FilterChainImpl.doFilter(FilterChainImpl.java:42)[optimized]
at org/seasar/extension/filter/EncodingFilter.doFilter(EncodingFilter.java:62)[optimized]
at weblogic/servlet/internal/FilterChainImpl.doFilter(FilterChainImpl.java:42)[optimized]
at org/seasar/struts/filter/S2StrutsFilter.doFilter(S2StrutsFilter.java:42)[optimized]
at weblogic/servlet/internal/FilterChainImpl.doFilter(FilterChainImpl.java:42)[optimized]
at org/seasar/framework/container/filter/S2ContainerFilter.doFilter(S2ContainerFilter.java:60)[optimized]
at weblogic/servlet/internal/FilterChainImpl.doFilter(FilterChainImpl.java:42)[optimized]
at jp/co/****/*******/accesslog/AccessLogCollector.doFilter(AccessLogCollector.java:378)[optimized]
at weblogic/servlet/internal/FilterChainImpl.doFilter(FilterChainImpl.java:42)[inlined]
at weblogic/servlet/internal/WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3229)[optimized]
at weblogic/security/acl/internal/AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)[optimized]
at weblogic/security/service/SecurityManager.runAs(SecurityManager.java:121)[inlined]
at weblogic/servlet/internal/WebAppServletContext.securedExecute(WebAppServletContext.java:2002)[inlined]
at weblogic/servlet/internal/WebAppServletContext.execute(WebAppServletContext.java:1908)[optimized]
at weblogic/servlet/internal/ServletRequestImpl.run(ServletRequestImpl.java:1362)[optimized]
at weblogic/work/ExecuteThread.execute(ExecuteThread.java:209)[optimized]
at weblogic/work/ExecuteThread.run(ExecuteThread.java:181)[optimized]
at jrockit/vm/RNI.c2java(IIII)V(Native Method)
-- end of trace
■スレッドダンプ3 - スレッド77によってロックされているスレッド
"[STUCK] ExecuteThread: '8' for queue: 'weblogic.kernel.Default (self-tuning)'" id=73 idx=0xac tid=23579 prio=1 alive, in native, blocked, daemon
-- Blocked trying to get lock: org/seasar/mayaa/impl/engine/[E-MAIL ADDRESS DELETED][fat lock]
at jrockit/vm/Threads.waitForSignal(J)Z(Native Method)
at jrockit/vm/Locks.fatLockBlockOrSpin(ILjrockit/vm/ObjectMonitor;II)Z(Unknown Source)[optimized]
at jrockit/vm/Locks.lockFat(Ljava/lang/Object;ILjrockit/vm/ObjectMonitor;Z)Ljava/lang/Object;(Unknown Source)[optimized]
at jrockit/vm/Locks.monitorEnterSecondStage(Ljava/lang/Object;I)Ljava/lang/Object;(Unknown Source)[optimized]
at org/seasar/mayaa/impl/engine/PageImpl.getTemplateFromFixedSuffix(PageImpl.java:140)[optimized]
at org/seasar/mayaa/impl/engine/PageImpl.getTemplate(PageImpl.java:163)[optimized]
at org/seasar/mayaa/impl/engine/RenderUtil.getTemplate(RenderUtil.java:298)[optimized]
at org/seasar/mayaa/impl/engine/RenderUtil.renderPage(RenderUtil.java:333)[inlined]
at org/seasar/mayaa/impl/engine/processor/InsertProcessor.doStartProcess(InsertProcessor.java:327)[optimized]
at org/seasar/mayaa/impl/engine/RenderUtil.renderTemplateProcessor(RenderUtil.java:134)[optimized]
at org/seasar/mayaa/impl/engine/RenderUtil.renderTemplateProcessorChildren(RenderUtil.java:208)[optimized]
at org/seasar/mayaa/impl/engine/RenderUtil.renderTemplateProcessor(RenderUtil.java:147)[optimized]
at org/seasar/mayaa/impl/engine/RenderUtil.renderTemplateProcessorChildren(RenderUtil.java:208)[inlined]
at org/seasar/mayaa/impl/engine/RenderUtil.renderTemplateProcessor(RenderUtil.java:147)[inlined]
at org/seasar/mayaa/impl/engine/RenderUtil.renderTemplateProcessorChildren(RenderUtil.java:208)[optimized]
at org/seasar/mayaa/impl/engine/RenderUtil.renderTemplateProcessor(RenderUtil.java:147)[optimized]
at org/seasar/mayaa/impl/engine/RenderUtil.renderTemplateProcessorChildren(RenderUtil.java:208)[inlined]
at org/seasar/mayaa/impl/engine/RenderUtil.renderTemplateProcessor(RenderUtil.java:147)[inlined]
at org/seasar/mayaa/impl/engine/RenderUtil.renderTemplateProcessorChildren(RenderUtil.java:208)[optimized]
at org/seasar/mayaa/impl/engine/RenderUtil.renderTemplateProcessor(RenderUtil.java:147)[inlined]
at org/seasar/mayaa/impl/engine/processor/ComponentRenderer.renderTemplate(ComponentRenderer.java:70)[optimized]
at org/seasar/mayaa/impl/engine/RenderUtil.renderPage(RenderUtil.java:348)[inlined]
at org/seasar/mayaa/impl/engine/processor/InsertProcessor.doStartProcess(InsertProcessor.java:327)[optimized]
at org/seasar/mayaa/impl/engine/RenderUtil.renderTemplateProcessor(RenderUtil.java:134)[inlined]
at org/seasar/mayaa/impl/engine/RenderUtil.renderProcessorTree(RenderUtil.java:263)[inlined]
at org/seasar/mayaa/impl/engine/TemplateImpl.doTemplateRender(TemplateImpl.java:203)[optimized]
at org/seasar/mayaa/impl/engine/PageImpl.renderTemplate(PageImpl.java:242)[inlined]
at org/seasar/mayaa/impl/engine/RenderUtil.renderPage(RenderUtil.java:348)[inlined]
at org/seasar/mayaa/impl/engine/PageImpl.doPageRender(PageImpl.java:190)[optimized]
at org/seasar/mayaa/impl/engine/EngineImpl.doPageService(EngineImpl.java:368)[optimized]
at org/seasar/mayaa/impl/engine/EngineImpl.doService(EngineImpl.java:490)[optimized]
at org/seasar/mayaa/impl/MayaaServlet.doService(MayaaServlet.java:97)[inlined]
at jp/co/****/*******/core/MayaaServletEx.doService(MayaaServletEx.java:56)[inlined]
at org/seasar/mayaa/impl/MayaaServlet.doGet(MayaaServlet.java:80)[inlined]
at jp/co/****/*******/core/MayaaServletEx.doGet(MayaaServletEx.java:42)[optimized]
at javax/servlet/http/HttpServlet.service(HttpServlet.java:743)[optimized]
at javax/servlet/http/HttpServlet.service(HttpServlet.java:856)[optimized]
at weblogic/servlet/internal/StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)[optimized]
at weblogic/servlet/internal/StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)[inlined]
at weblogic/servlet/internal/ServletStubImpl.execute(ServletStubImpl.java:283)[optimized]
at weblogic/servlet/internal/ServletStubImpl.execute(ServletStubImpl.java:175)[inlined]
at weblogic/servlet/internal/RequestDispatcherImpl.invokeServlet(RequestDispatcherImpl.java:525)[optimized]
at weblogic/servlet/internal/RequestDispatcherImpl.forward(RequestDispatcherImpl.java:261)[optimized]
at org/apache/struts/action/RequestProcessor.doForward(RequestProcessor.java:1085)[inlined]
at org/seasar/struts/processor/S2RequestProcessor.doForward(S2RequestProcessor.java:249)[inlined]
at org/apache/struts/action/RequestProcessor.processForwardConfig(RequestProcessor.java:398)[inlined]
at org/seasar/struts/processor/S2RequestProcessor.processForwardConfig(S2RequestProcessor.java:147)[optimized]
at org/seasar/struts/processor/AcceptorImpl.process(AcceptorImpl.java:139)[optimized]
at org/seasar/struts/processor/S2RequestProcessor.process(S2RequestProcessor.java:61)[inlined]
at jp/co/****/*******/core/S2RequestProcessorEx$$EnhancedByS2AOP$$1276db2.process$$invokeSuperMethod$$(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)V(S2RequestProcessorEx$$EnhancedByS2AOP$$1276db2.java)[inlined]
at jp/co/****/*******/core/S2RequestProcessorEx$$EnhancedByS2AOP$$1276db2$$MethodInvocation$$process0.proceed()Ljava/lang/Object;(MethodInvocationClassGenerator.java)[optimized]
at org/seasar/framework/aop/impl/NestedMethodInvocation.proceed(NestedMethodInvocation.java:45)[optimized]
at jp/co/****/*******/common/aop/SessionTimeoutCheckInterceptor.invoke(SessionTimeoutCheckInterceptor.java:104)[optimized]
at org/seasar/framework/aop/impl/NestedMethodInvocation.proceed(NestedMethodInvocation.java:43)[inlined]
at org/seasar/framework/aop/interceptors/InterceptorAdapter.invoke(InterceptorAdapter.java:54)[optimized]
at jp/co/****/*******/core/S2RequestProcessorEx$$EnhancedByS2AOP$$1276db2$$MethodInvocation$$process0.proceed()Ljava/lang/Object;(MethodInvocationClassGenerator.java)[inlined]
at jp/co/****/*******/core/S2RequestProcessorEx$$EnhancedByS2AOP$$1276db2.process(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)V(S2RequestProcessorEx$$EnhancedByS2AOP$$1276db2.java)[optimized]
at org/apache/struts/action/ActionServlet.process(ActionServlet.java:1196)[inlined]
at org/apache/struts/action/ActionServlet.doGet(ActionServlet.java:414)[optimized]
at javax/servlet/http/HttpServlet.service(HttpServlet.java:743)[optimized]
at javax/servlet/http/HttpServlet.service(HttpServlet.java:856)[optimized]
at weblogic/servlet/internal/StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)[optimized]
at weblogic/servlet/internal/StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)[inlined]
at weblogic/servlet/internal/ServletStubImpl.execute(ServletStubImpl.java:283)[optimized]
at weblogic/servlet/internal/ServletStubImpl.execute(ServletStubImpl.java:175)[inlined]
at weblogic/servlet/internal/RequestDispatcherImpl.invokeServlet(RequestDispatcherImpl.java:525)[optimized]
at weblogic/servlet/internal/RequestDispatcherImpl.forward(RequestDispatcherImpl.java:261)[optimized]
at jp/co/****/*******/common/urlconv/ReplaceTextFilter.doFilter(ReplaceTextFilter.java:354)[optimized]
at weblogic/servlet/internal/FilterChainImpl.doFilter(FilterChainImpl.java:42)[optimized]
at org/seasar/extension/filter/EncodingFilter.doFilter(EncodingFilter.java:62)[optimized]
at weblogic/servlet/internal/FilterChainImpl.doFilter(FilterChainImpl.java:42)[optimized]
at org/seasar/struts/filter/S2StrutsFilter.doFilter(S2StrutsFilter.java:42)[optimized]
at weblogic/servlet/internal/FilterChainImpl.doFilter(FilterChainImpl.java:42)[optimized]
at org/seasar/framework/container/filter/S2ContainerFilter.doFilter(S2ContainerFilter.java:60)[optimized]
at weblogic/servlet/internal/FilterChainImpl.doFilter(FilterChainImpl.java:42)[optimized]
at jp/co/****/*******/accesslog/AccessLogCollector.doFilter(AccessLogCollector.java:378)[optimized]
at weblogic/servlet/internal/FilterChainImpl.doFilter(FilterChainImpl.java:42)[inlined]
at weblogic/servlet/internal/WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3229)[optimized]
at weblogic/security/acl/internal/AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)[optimized]
at weblogic/security/service/SecurityManager.runAs(SecurityManager.java:121)[inlined]
at weblogic/servlet/internal/WebAppServletContext.securedExecute(WebAppServletContext.java:2002)[inlined]
at weblogic/servlet/internal/WebAppServletContext.execute(WebAppServletContext.java:1908)[optimized]
at weblogic/servlet/internal/ServletRequestImpl.run(ServletRequestImpl.java:1362)[optimized]
at weblogic/work/ExecuteThread.execute(ExecuteThread.java:209)[optimized]
at weblogic/work/ExecuteThread.run(ExecuteThread.java:181)
at jrockit/vm/RNI.c2java(IIII)V(Native Method)
-- end of trace
以上
mayaa-user メーリングリストの案内