PostgreSQL(RDS)でのmax_connectionsの設定について

今回はAWSのRDSでPostgreSQLを使っている場合のmax_connectionsについて解説です。

RDSのmax_connection設定値

RDSではパラメータグループで設定されている「max_connections」値があり、デフォルトでは下記のような計算式によって可変値が設定されるようになっています。

max_connections	LEAST({DBInstanceClassMemory/9531392},5000)	6-8388607

DBInstanceClassMemoryはデータベースインスタンスのメモリサイズが適応されるので、インスタンスのタイプが構成のであればあるほどmax_connectionsの値は上がっていくことになる。
(※実際にはインスタンスタイプに記載されているメモリのサイズがそのままDBInstanceClassMemoryの値として適応されるわけではなく、RDSプロセスに割り当てられたメモリサイズを意味するということなので、記載されたサイズよりは若干少ない値になるそうです。)

実際の値と計算式で算出した値について

計算式で求めた理論値と実際の値には多少乖離があるのでクエリで調べてみます。
max_connectionの現在値を確認するには下記のクエリを実行します。

SHOW max_connections;

db.t2.micro(1CPU, Memory 1GB)

db.t2.medium(2CPU, Memory 4GB)

db.m4.xlarge(4CPU, Memory 16GB)

計算式をもとに算出した理論値と実際の設定値は多少乖離があるようで基本は
理論値 > 実際の設定値
といった具合になっているようです。

補足

max_connectionsのLEAST関数に設定されている「9531392」という数値はPostgreSQLのバージョン等によって異なるようなので、環境に合わせて設定する必要があるようです。

参考リンク

AWSドキュメント DB パラメータグループを使用する

https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/USER_WorkingWithParamGroups.html

Oracle データベースを Amazon RDS PostgreSQL または Amazon Aurora PostgreSQL に移行する上でのベスト プラクティス: PostgreSQL 環境のターゲット データベースに関する考慮事項

https://aws.amazon.com/jp/blogs/news/best-practices-for-migrating-an-oracle-database-to-amazon-rds-postgresql-or-amazon-aurora-postgresql-target-database-considerations-for-the-postgresql-environment/

Leave a Reply

Your email address will not be published. Required fields are marked *