RDBとの連携でコネクションプールを利用している場合、以下のようなエラーが発生することがあります。
- Communications link failure. (Connection reset)
- The connection does not exist.
コネクションプールを利用するとフロー終了後もコネクションが保持されます。そのあとにフローがリクエストされた場合、プールにコネクションがあればそれを利用し、プールになければ新たにコネクションを作成します。しかし、何らかの理由によってプールされたコネクションが解放される前にこのコネクションが強制的に切断されていた場合、そのプールされたコネクションを利用しようとした最初のフローで上記エラーが発生します。
理由としては、以下のものが挙げられます。
- データベースサーバー側から(再起動などで)切断された
- ファイアウォールにおいて一定時間の無通信による強制切断があった
- ネットワーク的な要因で切断された
そのコネクションを使用したフローが異常終了した場合、コネクションは解放されるため後続のフローでエラーは発生しません。
対処方法
上記のエラーが頻発する場合、コネクション設定でコネクションプールしないように設定を変更するか、またはコネクションプールがタイムアウトする時間を短く設定してください。
※コネクション設定でコネクションプールしないようにした場合、フロー実行時にコネクションを作成する処理が増え、頻度が高い場合には処理時間などに影響を与える可能性があります。
コネクションプールの設定
管理コンソール
「設定」-「コネクション」-「RDB」画面で、各コネクション設定の「コネクションプール」項目で「ON」を選択します。
フローデザイナー
コネクションペインで作成する各コネクション設定で「コネクションをプール」プロパティで「はい」を選択します。
コネクションプールのタイムアウトの設定
管理コンソールの「設定」-「サービス」-「フロー」画面の「フローエンジン設定」の「コネクションプールタイムアウト」項目で変更します。