コネクションプールで接続負荷を軽減!
パラメータを設定する
pgpool.confの主なパラメータについて説明します。なおこれらのパラメータはすべてpgpoolAdminから設定することが可能です。
まず、「listen_addresses」について説明します。このパラメータはpgpool-IIがTCP/IPコネクションを受け付けるアドレスをホスト名またはIPアドレスを指定します。
「*」を指定するとすべてのIPインタフェースからのコネクションを受け付けます。「''」を指定するとTCP/IPコネクションを受け付けません。デフォルト値は「localhost」です。UNIXドメインソケット経由のコネクションは常に受け付けます。このパラメータを変更した時にはpgpool-IIを再起動してください。
「port」ではpgpool-IIがコネクションを受け付けるポート番号を指定します。デフォルト値は9999です。このパラメータを変更した時にはpgpool-IIを再起動してください。
「child_life_time」はpgpool-IIの子プロセスの寿命です。アイドル状態になってからchild_life_time秒経過すると、いったん終了して新しいプロセスを起動します。これはメモリーリークそのほかの障害に備えた予防措置です。
child_life_timeのデフォルト値は300秒、すなわち5分です。0を指定するとこの機能は働きません(起動し続けます)。なお、まだ一度もコネクションを受け付けていないプロセスにはchild_life_timeは適用されません。このパラメータを変更した時には設定ファイルを再読み込みしてください。
パラメータの設定
「connection_cache」はコネクションをキャッシュするかどうかを設定します。trueならコネクションをキャッシュします。デフォルトはtrueになっています。このパラメータを変更した時にはpgpool-IIを再起動してください。
「num_init_children」はpreforkするpgpool-IIのサーバープロセスの数です。デフォルト値は32になっています。この値がクライアントが同時に接続できる最大数となります。このパラメータを変更した時にはpgpool-IIを再起動してください。
「max_pool」はpgpool-IIの各サーバープロセスがキープするPostgreSQLへの最大コネクション数です。pgpool-IIは、ユーザー名、データベースが同じならばコネクションを再利用しますが、そうでなければ新たにPostgreSQLへのコネクションを確立しようとします。
したがって、ここでは想定されるユーザー名とデータベース名のペアの種類の数だけをmax_poolに指定しておく必要があります。もしmax_poolを使いきってしまった場合は一番古いコネクションを切断し、そのスロットが再利用されます。max_poolのデフォルト値は4です。
なお、pgpool-II全体としては、num_init_children*max_pool分だけPostgreSQLへのコネクションが張られる点に注意してください。このパラメータを変更した時にはpgpool-IIを再起動してください。