【问题标题】:postgresql failing with below error on lion os xpostgresql 在 lion os x 上失败并出现以下错误
【发布时间】:2011-10-15 06:32:07
【问题描述】:
 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.

【问题讨论】:

  • 您觉得邮件的哪一部分令人费解?

标签: macos postgresql osx-lion


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    编辑 /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 的值仍然太小。

    【讨论】:

      【解决方案3】:

      正如 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 - 讨论 Darwin 上的共享内存

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

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

      【讨论】:

        【解决方案4】:

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

        /proc/sys/kernel/shmall

        /proc/sys/kernel/shmmax

        /proc/sys/kernel/shmmni

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-02-12
          • 1970-01-01
          • 1970-01-01
          • 2012-06-09
          • 1970-01-01
          • 1970-01-01
          • 2015-04-08
          相关资源
          最近更新 更多