1

Win から Mac に移行しており、Homebrew を使用して Mac X 10.8.3 に PostgreSql 9.2.4 をインストールしています。

initdb コマンドを実行すると

initdb /usr/local/var/postgres -E utf8

次のエラーが表示されます

DETAIL:  Failed system call was shmget(key=1, size=2072576, 03600).
HINT:  This error usually means that PostgreSQL's request for a shared memory segment exceeded 
available memory or swap space, or exceeded your kernel's SHMALL parameter.  You can either 
reduce the request size or reconfigure the kernel with larger SHMALL.  To reduce the request 
size (currently 2072576 bytes), reduce PostgreSQL's shared memory usage, perhaps by reducing 
shared_buffers or max_connections.

調べたらこんなスレ見つけた

MAC OS X 10.6 for PostgreSQL での SHMMAX などの値の設定

そして、shmallを増やしてうまくいけばそれが役立つと考えましたが、以下の構成で上記と同じエラーが発生します。

私の /etc/sysctl.conf ファイルの内容は

kern.sysv.shmmax=33554432
kern.sysv.shmmin=1
kern.sysv.shmmni=256
kern.sysv.shmseg=64
kern.sysv.shmall=8192

shmall が 4096 のブロックであると仮定すると、システムの他の部分で大量のメモリが使用されていない限り、shmget には十分なメモリがあるようです。アクティビティ モニターに、空きメモリが 6 GB を超えていることが示されています。

おそらく、私がここで見逃している基本的なものがあります。

ご協力いただきありがとうございます。

-S

4

1 に答える 1

0

このコマンドを使用して、 (バイト)ipcs -mのうち既に使用されている共有メモリの量を確認します。shmmax33554432

おそらく最大値に近いと思います。shmmax が非常に小さい場合、未使用の 6GB は役に立ちません。

個人的には、このような小さな値は気にしません。対応する 100 万で、shmmax4Gb のようなもので増加します。shmall高い値を持つことによる実際的な欠点はありません。

于 2013-09-03T00:02:30.867 に答える