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

Macos postgresql在lion os x上失败,出现以下错误,macos,postgresql,osx-lion,Macos,Postgresql,Osx Lion,这与PostgreSQL配置文件中的共享内存参数(Shared_buffers)有关。Linux也有适当的设置来限制应用程序可以请求的内存量。这些设置存储在三个文件中:- /proc/sys/kernel/shmall /proc/sys/kernel/shmmax /proc/sys/kernel/shmmni 这些文件中的一个或多个需要修改或使用“sysctl”可执行文件。请让您的系统管理员执行此操作。错误消息告诉您值应该是什么。PostgreSQL应该能够正常启动 如果您无法更改这些值,请

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

/proc/sys/kernel/shmall

/proc/sys/kernel/shmmax

/proc/sys/kernel/shmmni

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


如果您无法更改这些值,请将shared_buffers参数减小到低于阈值的程度,编辑/etc/sysctl.conf并重新启动对我来说是个好办法:

 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.

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

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

在我的mac上,我将256MB分配给共享内存,如下所示:

kern.sysv.shmmax=1610612736
kern.sysv.shmmin=1
kern.sysv.shmmni=256
kern.sysv.shmseg=64
kern.sysv.shmall=393216
在研究这一点时,我发现以下两个链接很有用:

-讨论达尔文的共享内存


提供有关postgresql的此问题的一些历史记录。

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

kern.sysv.shmmax=268435456
这将允许Postgres启动

要在重新启动时保持一致,您需要创建或编辑文件
/etc/sysctl.conf
,以包括:

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

你觉得信息的哪一部分令人费解?
kern.sysv.shmmax=16777216
kern.sysv.shmall=4096