postgresql在lion os x上失败并出现以下错误

时间:2011-07-28 15:55:59

标签: macos postgresql osx-lion

 Failed system call was shmget(key=5432001, size=16498688, 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 16498688 bytes), reduce PostgreSQL's shared_buffers parameter (currently 1536) and/or its max_connections parameter (currently 104).
    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.

4 个答案:

答案 0 :(得分:7)

您可以使用以下命令设置当前会话的内存:

sudo sysctl -w kern.sysv.shmmax=16777216
sudo sysctl -w kern.sysv.shmall=4096

这将允许Postgres开始。

要确保重新启动,您需要创建或编辑文件/etc/sysctl.conf以包含:

kern.sysv.shmmax=16777216
kern.sysv.shmall=4096

答案 1 :(得分:4)

编辑/etc/sysctl.conf并重新启动为我做了诀窍:

kern.sysv.shmmax=1610612736
kern.sysv.shmmin=1
kern.sysv.shmmni=256
kern.sysv.shmseg=64
kern.sysv.shmall=393216

奇怪的是,PostgreSQL安装程序已经抱怨错误的共享内存设置,并建议更改sysctl.conf。但显然,shmmaxshmall的值仍然太小。

答案 2 :(得分:2)

正如Ortwin所提到的,您需要编辑/etc/sysctl.conf文件。此文件实际上并不存在于干净的Mac OS / X Lion安装中,您需要创建它。上面列出的参数对于大型机器来说是合理的 - 这为共享内存分配高达1.5gb。如果你只有2gb,你可能想要少用它。

在我的Mac上,我将256MB分配给共享内存,使用以下行:

kern.sysv.shmmax=268435456

我在研究这个时发现有用的两个链接如下:

http://www.spy-hill.net/help/apple/SharedMemory.html - 讨论达尔文的共享内存

http://archives.postgresql.org/pgsql-patches/2006-02/msg00176.php

给出了关于postgresql的这个问题的一些历史。

答案 3 :(得分:1)

这与PostgreSQL配置文件中的Shared Memory参数(shared_buffers)有关。 Linux还有适当的设置来限制应用程序可以请求的内存量。这些设置存储在三个文件中: -

的/ proc / SYS /内核/ SHMALL

的/ proc / SYS /内核/ SHMMAX

的/ proc / SYS /内核/ SHMMNI

需要修改这些文件中的一个或多个,或使用“sysctl”可执行文件。请系统管理员执行此操作。错误消息告诉您应该是什么值。然后PostgreSQL应该能够正常启动。

如果您无法更改值,请将shared_buffers参数减少到低于阈值的点

相关问题