0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[.NETでのWebアプリ 第17回] コネクションプーリング

Posted at
Page 1 of 7

コネクションプーリングとは

  • DB接続を予めいくつか開いて保持
  • リクエストが来たら払い出し
  • リクエストが終わったら戻す

存在意義

  • レスポンス対策と流量制限
  • DB接続、特にRDBの接続は開くのに時間がかかる
    • リクエストが来る度に開いていたら毎リクエストが数秒遅延
  • Webアプリはいつどのくらいリクエストが来るか予測できない
    • リクエストが来る度に開いていたら上限に達する

接続数が足りないときは

  • 一定数を新たに開く
  • 上限はある
  • 上限に達した場合は待ちが発生する

スケールアウト環境の考慮点

  • APサーバのインスタンスが増えるとプーリングも増えることに注意が必要
  • 例えば、最大100接続開く設定にしていたとして、インスタンス数上限が30だとすると、最大のDB接続数は?

スケールアウト環境の最適解

  • AWSであれば、コネクションプーリングしてくれるサービスがある(RDS Proxy)
    残念ながらAzureには同等のサービスがないっぽい・・・
  • そもそも、接続にかかる時間が問題にならないDBを使う
    • AzureならCosmos DB
    • AWSならDynamo DB

最後に

  • 仕組みを知っておくことが超重要!!
  • スケールアウトとコネクションプーリングの仕組みを知ることで適切なチューニングが出来るようになる
  • そもそもプーリングが必要ないサービスの採用も検討の価値あり
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?