- PR -

max_connections と Shared Memory (shm) の関係について

1
投稿者投稿内容
しるしる
常連さん
会議室デビュー日: 2005/10/25
投稿数: 24
投稿日時: 2008-01-29 11:31
しるしると申します。

以下の環境で 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
# (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 の値をもっと増やす必要があるように
# 思われますが、、、。

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

スキルアップ/キャリアアップ(JOB@IT)