Postgre for PostgreSql给出了shmget错误

时间:2013-09-02 21:35:02

标签: macos postgresql shared-memory

我正在从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.

在研究中我找到了这个帖子

Setting SHMMAX etc values on MAC OS X 10.6 for PostgreSQL

并且认为我会增加大号,并希望这会有所帮助,但我得到与上面相同的错误以及下面的配置。

我的/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,除非我的系统的其他部分正在使用它的一堆。活动监视器显示我剩余的可用内存超过6GB。

也许这里有一些基本的东西。

感谢您的帮助。

-S

1 个答案:

答案 0 :(得分:0)

使用ipcs -m命令了解shmmax33554432字节)已经使用了多少共享内存。

据推测它接近最大值。如果shmmax太小,未使用的6GB无济于事。

我个人不打扰这么小的价值观。增加shmmax等4Gb,shmall相应的100万。具有高价值没有任何实际缺点。