seraphyの日記

日記というよりは過去を振り返るときのための単なる備忘録

weblogic6.1sp2でコネクションプールが枯渇?

最近、weblogic6.1sp2のJDBCコネクションプールが枯渇する問題が発生。単にユーザー数が増えて同時接続数が増えたわけでもなく、またコネクションを閉じ忘れたアプリのによるリソースリークが発生したわけでもなさそうである。HPより、その時点から3回ほどのスレッドダンプをとり、Activeである、いくつかのスレッドのアプリケーションについて問い合わせが来ているが、アプリケーションベンダ側は再現性なく問題は発見できない、との回答。
そこでスレッドダンプを見せてもらうと、Activeと思われていたものはNativeでの待ち状態で事実上のウェイト状態のものであることが判明。このケースではJDBCのソケットで読み込み待機している。JAVAのスレッドダンプの状態はNativeメソッド内でのウェイトは常にActiveと判断されるわけで、結果的に、3回のスレッドダンプ中に生存しつづけている、すべてのスレッドは全てウェイト状態でブロッキングされた状態であった。停止している場所はコネクションプールを取得しようとしている場所であったり、JDBCのドライバ部分であったり、数箇所発生しているが、いずれもドライバ周りの障害ではないか、と思わせるものであった。