Hatena::ブログ(Diary)

ablog このページをアンテナに追加 RSSフィード Twitter

2017-12-11

RDS PostgreSQL で大量にセッションを張った場合のメモリ使用量を調べる

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 メトリックスで確認してみた。

f:id:yohei-a:20171211190130p:image:w640

f:id:yohei-a:20171211190125p:image:w640

f:id:yohei-a:20171211190121p:image:w640


環境

  • db.m4.xlarge*1
    • vCPU: 4
    • メモリ: 16GB

参考

ローカルメモリ量 = プロセスのスタック領域
                  + 一時テーブルを使用するデータベースセッションで消費されるメモリ
                  + ソートやハッシュテーブル操作を行うデータベースセッションで消費されるメモリ
                  + 保守操作で消費されるメモリ
                  + プロセス毎に消費される基礎メモリ
                  + データアクセスの準備のために消費されるメモリ
プロセス毎に消費される基礎メモリ
  =  3メガバイト × (max_connections + autovacuum_max_workers + 9)
H.1 FUJITSU Enterprise Postgresで使用するメモリの見積り式

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/yohei-a/20171211/1512983516
リンク元