ablog

不器用で落着きのない技術者のメモ

コネクションプーリングのベストプラクティス

とりあえず書いてみる。間違ってたら後で直す。

  • 最小=最大
    • コネクションが増える時にDBサーバに負荷がかかるから。
  • アイドル物理接続の切断タイムアウトは長め(1時間とか)に
    • 短いとしょっちゅう切ったり張ったりしてコネクションプーリングしてないのと一緒になる。
  • DBサーバに障害が発生した時にゾンビコネクションが残らないようにする
    • FCF などを使えば良い。DBサーバに障害が発生すると、APサーバに連絡が届いて、コネクションがメンテナンスされる。
    • コネクション単位の障害については、リトライするようなコーディングにするのか、APサーバでコネクションを Validate するようにするのか後で調べて書く。
  • リソースのバランスを考慮してプーリングする本数を決める*1
    • 例えば、Webサーバへの最大同時接続数が 50 なら、
    • Apache の最大プロセス数を 50 に、
    • コネクションプーリングする数も 50 に、
    • Oracle の初期化パラメータ PROCESSES などを適切に設定する。
    • その設定で消費されるメモリ使用量を計算して物理的に足りるか、カーネルパラメータの設定は適切かなど、総合的に設計する。

*1:できれば後で計算式を書いてみる。