ロールバックしたコネクションでMySQLにSLEEPセッションが残ってしまう件

自分がやってるシステム(Seasar2, SAStruts, S2JDBCを使っています)で、 ちょいちょいな頻度でヘンテコリンなデータが入っていて、 JSONをパースするとことでExceptionが発生していました。   ログ追ってたら、上記の後続処理で、 ロールバックしたコネクションでSelectにいくところで、 ====== [ESSR0308]既にロールバックとしてマークされています ====== ってのが、出ていました。   その際に大量にDB(MySQL)にアクセスがある状態だと、 MySQLにSLEEPのセッションが残ってしまって。 # 全部が全部残るわけではなく、この辺のメカニズムがよく分かりません。。   ただ、あんまりSLEEPセッションが溜まりすぎると、 新しくセッション張れなくなっちゃうので、#DBへの接続エラーになってしまう。   現状はスクリプト書いて定期的に一定時間以上SLEEPしている セッションを切ってしまっていたのですが、 場当たり的なイケてない対処だよねってことで。   あーだこーだトライ&エラーしてたら、 j2ee.diconにaddCommitRuleを設定して、 トランザクションロールバックするようにマークしないようにしたら、 SLEEPは残らなくなりました。 http://s2container.seasar.org/2.4/ja/tx.html#TransAttribute   まぁ、Exceptionが起こらないようにアプリを改修するのですが、 大量アクセスがあるシステムでロールバックしたコネクションには 気をつけよう。。。   備忘録的に。。