Ошибка postgresql с приведенной ниже ошибкой на lion os x - PullRequest
2 голосов
/ 28 июля 2011
 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 ]

7 голосов
/ 31 марта 2012

Вы можете установить память для текущего сеанса, используя команды:

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
4 голосов
/ 23 декабря 2011

Редактирование /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.Но, по-видимому, значения для shmmax и shmall все еще были слишком малы.

2 голосов
/ 24 января 2012

Как упоминает Ортвин, вам нужно отредактировать файл /etc/sysctl.conf. Этот файл на самом деле не существует в чистой установке Mac OS / X Lion, вам нужно его создать. Перечисленные выше параметры приемлемы для большой машины - для общей памяти выделяется до 1,5 ГБ. Если у вас есть только 2 ГБ, вы можете использовать меньше, чем это.

На моем Mac я выделяю 256 МБ общей памяти со следующей строкой:

kern.sysv.shmmax=268435456

Вот две ссылки, которые я нашел полезными при исследовании этого:

http://www.spy -hill.net / help / apple / SharedMemory.html - обсуждается общая память на Дарвине

и

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

дает некоторую историю этой проблемы в отношении postgresql.

1 голос
/ 29 июля 2011

Это связано с параметром Shared Memory (shared_buffers) в файле конфигурации PostgreSQL.В Linux также есть настройки, ограничивающие объем памяти, который может запрашивать приложение.Эти настройки хранятся в трех файлах: -

/ proc / sys / kernel / shmall

/ proc / sys / kernel / shmmax

/ proc / sys / kernel /shmmni

Один или несколько из этих файлов необходимо изменить или использовать исполняемый файл "sysctl".Попросите вашего системного администратора сделать это.Сообщение об ошибке говорит вам, какие значения должны быть.После этого PostgreSQL сможет правильно запускаться.

Если вы не можете изменить значения, уменьшите параметр shared_buffers до точки, где он ниже порога

...