RDS PostgreSQL に pgbench で 2000 セッション張って負荷をかけてみたところ、12.5GBほどあった空きメモリを使い尽くして、2GB以上スワップした。
プロセス自体のメモリ、ワーク領域、ページテーブル(PTE)などで1セッションあたり、6MB以上は使っている計算になる。
検証
pgbench を以下で2つ同時に実行して、負荷をかけた。
% pgbench -r -c 1000 -j 1000 -t 100000 -U awsuser -h pg-m4xlarge-master-6.******.ap-northeast-1.rds.amazonaws.com -d mydb
結果
AWSマネジメントコンソールの CloudWatch メトリックスで確認してみた。
環境
- db.m4.xlarge*1
- vCPU: 4
- メモリ: 16GB
参考
ローカルメモリ量 = プロセスのスタック領域 + 一時テーブルを使用するデータベースセッションで消費されるメモリ + ソートやハッシュテーブル操作を行うデータベースセッションで消費されるメモリ + 保守操作で消費されるメモリ + プロセス毎に消費される基礎メモリ + データアクセスの準備のために消費されるメモリプロセス毎に消費される基礎メモリ = 3メガバイト × (max_connections + autovacuum_max_workers + 9)H.1 FUJITSU Enterprise Postgresで使用するメモリの見積り式