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

[E-MAIL ADDRESS DELETED] [E-MAIL ADDRESS DELETED]
2011年 3月 22日 (火) 12:04:51 JST


お世話になっております。ロックオンの松村と申します。

現在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)
    at java.lang.Object.wait(Object.java:502)
    at org.seasar.extension.dbcp.impl.ConnectionPoolImpl.
checkOut(ConnectionPoolImpl.java:309)
    - locked <0x00002aaacff64a90> (a org.seasar.extension.dbcp.impl.
ConnectionPoolImpl)
    at org.seasar.extension.dbcp.impl.DataSourceImpl.
getConnection(DataSourceImpl.java:59)
    at org.seasar.extension.jdbc.util.DataSourceUtil.
getConnection(DataSourceUtil.java:51)
    at org.seasar.extension.jdbc.manager.JdbcManagerImpl.
getJdbcContext(JdbcManagerImpl.java:376)
    at org.seasar.extension.jdbc.query.AbstractSelect.
getResultListInternal(AbstractSelect.java:223)
    at org.seasar.extension.jdbc.query.AbstractSelect.
getResultList(AbstractSelect.java:172)


実際の運用では、5本の異なるバッチのスレッドが同じ時間に並列で動いています。
スレッドが止まってしまった時は、5本全てのスレッドが同じDBにコネクションを
取りに行ったところで止まっていました。
(止まっているというのは、Tomcatのログにてスレッドが数時間動いていないこ
とにより確認しています。)

また、5本全てがまったく同じ時間帯に止まったというわけではなく、5本のうち
の2本がほぼ同じタイミング(仮にずれていたとしてもミリ秒)でコネクションを
取りに行った際にスレッドが止まってしまい、後の3本は随時コネクションを取り
に行った順に止まってしまったようです。

何らかの原因で永遠にwait()をしている状態(?)のようなのですが、何か原因等
心辺りがある方いらっしゃいますでしょうか?

ご教授頂けると幸いです。
よろしくお願いいたします。


以下環境です。
--------------------------------
■S2ファミリー
s2-framework-2.4.38
s2-extension-2.4.38
s2-tiger-2.4.38
s2chronos-core-1.0.0
s2chronos-extension-1.0.0

■DB
PostgreSQL 8.3

以下設定です。
--------------------------------
■chronosCustomize.dicon
<components>
    <component name="schedulerConfiguration" class="org.seasar.chronos.
core.SchedulerConfiguration">
        <property name="hotdeployDisable">true</property>
        <property name="daemon">true</property> 
        <property name="autoFinish">true</property>
        <property name="autoFinishTimeLimit">5000L</property>
        <property name="taskScanIntervalTime">2000L</property>
        <property name="threadPoolType">@[E-MAIL ADDRESS DELETED]
</property>
    </component>
</components>

■org.seasar.extension.dbcp.impl.ConnectionPoolImpl のdicon定義
<component name="connectionPool"
    class="org.seasar.extension.dbcp.impl.ConnectionPoolImpl">
    <property name="timeout">600</property>
    <property name="maxPoolSize">10</property>
    <property name="allowLocalTx">false</property>
    <destroyMethod name="close"/>
</component>

━━━━━━━━━━━━━━━━ドクソウするための助走━>>>>
                                    http://www.lockon.co.jp/
株式会社ロックオン  AutoBidユニット
松村 亮平
E-Mail:  [E-MAIL ADDRESS DELETED]  
------------------------------------------------------------
 【大阪】
  〒530-0001  大阪府大阪市北区梅田2-4-9 ブリーゼタワー13F
  TEL:06-4795-7500  FAX:06-4795-7501
  
                   On The Way Of "Impact On The World"┌―→
―――――――――――――――――――――――――――┘


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