SYSTEM DEVELOPMENT

STUDY GROUP

コネクションプーリング

コネクションプーリング、postgresql の max_connectionsに関して調べてみました。
簡単ですが、備忘録的にまとめました。
 
max_connections(整数)
データベースサーバに同時接続する最大数。
デフォルトは100
カーネルの設定がそれをサポートしていない場合、もっと少なくなることがある
このパラメータはサーバ起動時のみ設定可能。
superuser_reserved_connections (整数)
PostgreSQLのスーパユーザのために予約されている接続数
最大値:max_connectionsの数。
有効な接続数は、少なくともmax_connectionsからsuperuser_reserved_connectionsを差し引いた数
デフォルト値:3
この値は max_connectionsでの値より小さくなくてはならない。
サーバ起動時のみ設定可能
[データベースへのアクセス]
通常の場合、データベースにアクセスし、コネクションを確立します。コネクションは一つのアクセス(読み出し・書き込み)が終了すると切断される
複数の人が同時にデータベースへのアクセスを要求した場合、人数分のコネクションを確立しなければならないため、データベースを用いたWebアプリケーションなどで一度に大量のアクセスがあると、性能が低下することがある
[オーバーヘッド]
(接続時)
1.TCPコネクションを確立する(TCP 3-way handshake)ためのオーバヘッド
2.データベース層のハンドシェイクオーバヘッド
3.データベース層の認証オーバヘッド
4.データベースプロセス側の接続用プロセス/スレッド生成オーバヘッドなど
(切断時)
1.接続を切断するオーバヘッドもある
[コネクションプーリング]
1.あらかじめ一定数のコネクションを確立しておく
2.使いまわす
3.コネクションごとにコネクションを確立、切断する処理が必要なくなる
4.用意したコネクション数(max_connections)を越えたアクセスがあった場合には、越えた分のアクセスはコネクションに空きが出るまで待たされることになる
 

menu