[mayaa-user:859] NamespaceImpl#getInstanceのスレッドのロック待ち

AGATA Toshitaka [E-MAIL ADDRESS DELETED]
2009年 9月 17日 (木) 18:32:39 JST


縣です。

稼働中のMayaaを使用したWebアプリにて以下の現象が発生しましたので
ご報告します。

状況としては、

・200クライアント程度が同時に利用した際に、
 サーバーからのレスポンスがすごく遅くなり、
 ほとんど使用不能な状態になった。

・tomcatがずっとほぼCPU100%つかんでいた。

・ApacheのHTTP接続は100本程度だった。

・はじめアクセスが多いのかと思い、apacheのMaxClientをしぼりましたが、
 改善せず。tomcatを再起動したところ、解消しました。

・Tomcatは起動後数ヶ月は普通に動いていた
 徐々に遅くなったのか、突然遅くなったのかは不明。

・このWebアプリはmayaaファイル/HTMLファイルが
 運用中に動的に増加することがあります。
 ユーザからの任意のタイミングで、システムから生成された
 mayaaファイル/HTMLファイルがwebapps以下に出力されます。
 (削除や更新もあり)
 障害発生時点でのmayaaファイルの総数は2801ありました。

tomcat再起動直前にスレッドダンプをとりましたので添付します。
中身見ると下記のようなのが148個ありますので、
Mayaaに関連したなにかしら問題(?)がありそうな気がしました。
(TomcatのコネクタのmaxThreadsは150に設定していました)

---------------------------------------------------------------------
"TP-Processor150" daemon prio=1 tid=0x0955b6c8 nid=0x5fa0 waiting for
monitor entry [0x7f833000..0x7f833fa0]
        at
org.seasar.mayaa.impl.engine.specification.NamespaceImpl.getInstance(NamespaceImpl.java:54)
        - waiting to lock <0x980649b8> (a
org.seasar.mayaa.impl.util.ReferenceCache)
        at
org.seasar.mayaa.impl.engine.specification.NamespaceImpl.copyOf(NamespaceImpl.java:77)
        at
org.seasar.mayaa.impl.engine.specification.SpecificationUtil.copyNamespace(SpecificationUtil.java:311)
        at
org.seasar.mayaa.impl.engine.processor.ElementProcessor.resolvePrefixAll(ElementProcessor.java:203)
        at
org.seasar.mayaa.impl.engine.processor.ElementProcessor.renderInit(ElementProcessor.java:450)
        at
org.seasar.mayaa.impl.engine.processor.ElementProcessor.doStartProcess(ElementProcessor.java:438)
---------------------------------------------------------------------

また、MLで似たような状況がありましたが、解決には至っていないようでした。
http://ml.seasar.org/archives/mayaa-user/2009-June/000815.html

■利用バージョン
OS     Cent OS 4
Java   jdk1.5.0_13
       Java HotSpot(TM) Client VM
       (build 1.5.0_13-b05, mixed mode, sharing)
Tomcat 5.5.25
Mayaa  1.1.1

何か解決のヒントになることがありましたら教えていただければ助かります。
よろしくお願いします。



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