紅孔雀 このページをアンテナに追加 RSSフィード

2012-09-24

[][] PostgreSQL で共有メモリ (shared_buffers) を変更する前に OS の上限値 (shmmax) を変更する

PostgreSQL の共有メモリは postgresql.conf の shared_buffers で指定できます。

今日、PostgreSQL の共有メモリを増やそうとしたところ、以下のようなエラーが発生しました。

FATAL:  could not create shared memory segment: Invalid argument
DETAIL:  Failed system call was shmget(key=5432001, size=567492608, 03600).
HINT:  This error usually means that PostgreSQL's request for a shared memory segment
       exceeded your kernel's SHMMAX parameter.  You can either reduce the request size
       or reconfigure the kernel with larger SHMMAX.  To reduce the request size
       (currently 567492608 bytes), reduce PostgreSQL's shared memory usage, perhaps by
       reducing shared_buffers or max_connections.
       If the request size is already small, it's possible that it is less than your
       kernel's SHMMIN parameter, in which case raising the request size or reconfiguring
       SHMMIN is called for.
       The PostgreSQL documentation contains more information about shared memory
        configuration.

エラーの内容は、「カーネルの SHMMAX パラメータを超えている」というものでした。

対応としては、PostgreSQL の共有メモリ量を減らすか、カーネルの SHMMAX を増やすかです。

以下のようにカーネルの SHMMAX を増やして対応しました。

# (1) OS の共有メモリの上限を確認する.
cat /proc/sys/kernel/shmmax

# (2) 上限値を変更する.
sudo vi /etc/sysctl.conf

# 以下のように kernel.shmmax を指定する.
{{{
# 1GB
kernel.shmmax = 1073741824
}}}

# 変更を反映する.
sudo sysctl -p

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


画像認証

トラックバック - http://d.hatena.ne.jp/benikujyaku/20120924/1348492807