[Seasar-user:20672] Re: 【s2chronos】スレッドが止まってしまう現象

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2011年 3月 22日 (火) 15:30:21 JST


小林 (koichik) です.

Date: Tue, 22 Mar 2011 12:04:51 +0900
From: [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:20668] 【s2chronos】スレッドが止まってしまう現象

> 現在s2chronosを使用し、バッチアプリケーションを運用しているのですが、以前
> より何度かスレッドが止まって全く動かなくなってしまうという現象が起きてい
> ます。

コネクションプールでデッドロックしているようですね。
S2Chronos は関係なさそうに見えます。

> 実際に止まった際に取ったスレッドダンプの一部が以下になります。
> ($ jstack ${プロセスID} > jstack.log)
> 
> "chronos-pool-3-thread-16" prio=10 tid=0x000000001a32b000 nid=0x456a in 
> Object.wait() [0x0000000043f5b000..0x0000000043f5cc90]
>    java.lang.Thread.State: WAITING (on object monitor)
>     at java.lang.Object.wait(Native Method)
>     - waiting on <0x00002aaacff64a90> (a org.seasar.extension.dbcp.impl.
> ConnectionPoolImpl)

この <0x00002aaacff64a90> を所有しているスレッドが別にいて、それが何を
待機しているのか、どのようにデッドロックが発生しているか調べてください。

典型的には

・複数のデータソースを使用している。
・requiresNew を使用している。
・S2DBCP の下で Tomcat のコネクションプールを使用している。

といった場合にコネクションプールでデッドロックを起こす可能性があります。


-- 
<component name="koichik">
    <property name="fullName">"Koichi Kobayashi"</property>
    <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
    <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
    <property name="twitter">"http://twitter.com/koichik"</property>
</component>



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