Postgresql с ошибкой ниже на льве os x

 Failed system call was shmget(key=5432001, size=16498688, 03600).
HINT:  This error usually means that PostgreSQL request for a shared memory segment exceeded your kernel 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 shared_buffers parameter (currently 1536) and/or its max_connections parameter (currently 104).
    If the request size is already small, it possible that it is less than your kernel 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.

Ответ 1

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

/Труды/SYS/ядро ​​/SHMALL

/Труды/SYS/ядро ​​/SHMMAX

/Труды/SYS/ядро ​​/SHMMNI

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

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

Ответ 2

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

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

Ответ 3

Редактирование/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 были все еще слишком малы.

Ответ 4

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

На моем 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.