[pgsql-jp: 39065] max_connections と Shared Memory (shm) の関係について

Seiichirou Hiraoka flathill @ netspring.co.jp
2008年 1月 24日 (木) 18:32:12 JST


平岡と申します。

以下の環境で max_connections の値を増やして良いものかどうかに
ついて悩んでおります。

実メモリ: 4GB
OS: Solaris10 SPARC
PostgreSQL 8.2.4

$ cat /etc/system
set shmsys:shminfo_shmmax = 0x2000000
set semsys:seminfo_semmni = 512
set semsys:seminfo_semmns = 512
set semsys:seminfo_semmap = 256

$ cat postgresql.conf (抜粋)
max_connections = 150
shared_buffers = 128MB

以下デフォルトのまま (設定ファイルから抜粋)

#temp_buffers = 8MB                     # min 800kB
#max_prepared_transactions = 5          # can be 0 or more
                                        # (change requires restart)
#work_mem = 1MB                         # min 64kB
#maintenance_work_mem = 16MB            # min 1MB
#max_stack_depth = 2MB                  # min 100kB
max_fsm_pages = 204800          # min max_fsm_relations*16, 6 bytes each
                                        # (change requires restart)
#max_fsm_relations = 1000               # min 100, ~70 bytes each

上記のように、現在 max_connections を 150 で運用しており、
ipcs -a の実行結果 (以下抜粋) を見ると、140MB 程度メモリを使って
いるようです。

T         ID      KEY        MODE        OWNER    GROUP  CREATOR   CGROUP NATTCH      SEGSZ  CPID  LPID   ATIME    DTIME    CTIME
Shared Memory:
m         10   0x52e2c1   --rw------- postgres postgres postgres postgres      2  141664256  8877  8880 18:11:05 18:11:05 18:11:05

/etc/system では 32MB としてあるのにこの値を超過出来ているという
のはどういう理由でしょうか。

また、今後 max_connections の値を 300 に増やして運用しようと
考えております。同じ環境の試験機で確認をした所、300 どころか
2000 程度まで増やしても PostgreSQL が起動しました (このときの
共有メモリの使用量は 170MB 程度) が、300 のまま運用しても問題
無いのでしょうか。

# http://www.postgresql.jp/document/pg825doc/html/kernel-resources.html
# 辺りを見ていると、/etc/system の値をもっと増やす必要があるように
# 思われますが、、、。

以上、御教授頂けますと幸いです。

- flathill



pgsql-jp メーリングリストの案内