[mayaa-user:883] Re: mayaa1.1.19でスレッドロックが発生する現象について

Taro KATO [E-MAIL ADDRESS DELETED]
2010年 1月 13日 (水) 16:12:58 JST


かとちんです。
nativeGetNewTLA と、blocked で検索したところ以下のディスカッションが見つかりましたが参考にはされましたか?

http://forums.oracle.com/forums/thread.jspa?threadID=816243&tstart=-2




2010年1月13日9:22 <[E-MAIL ADDRESS DELETED]>:

> 佐々木と申します。
>
>
> 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 mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/mayaa-user
>



-- 
/**
* @author Taro KATO (Gluegent, Inc.)
* @site {@link http://d.hatena.ne.jp/t-katochin/}
* It is better to create than to learn.
* Creating is the essence of life.
*/
-------------- next part --------------
HTMLの添付ファイルを保管しました...
URL: <http://ml.seasar.org/archives/mayaa-user/attachments/20100113/9e0feebe/attachment.html>


mayaa-user メーリングリストの案内