Подтвердить что ты не робот

Установка значений SHMMAX и т.д. Для MAC OS X 10.6 для PostgreSQL

Я пытаюсь запустить мой сервер PostgreSQL на своей локальной машине. Но я получил сообщение об ошибке:

FATAL:  could not create shared memory segment: Invalid argument
DETAIL:  Failed system call was shmget(key=5432001, size=9781248, 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 9781248 bytes), reduce PostgreSQL shared_buffers parameter (currently 1024) and/or its max_connections parameter (currently 13).
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.  

Я искал документы и смотрел на них, но все, что я пытаюсь настроить kern.sysv.shmmax и kern.sysv.shmall, работает. Каковы правильные настройки на Snow Leopard? Я установил postgres с macports.

4b9b3361

Ответ 1

Предупреждение: этот ответ был сделан obselete более новыми версиями OS X. Пожалуйста, обратитесь к ответу Paul Legato ниже.

В Mac OS X вы не можете изменить shmmax после загрузки системы. Вам нужно отредактировать файл /etc/rc или/etc/sysctl.conf и помнить, что он должен быть кратным 4096. См. Здесь http://www.postgresql.org/docs/8.4/static/kernel-resources.html

Ответ 2

Вам необходимо увеличить максимальную разрешенную память для общего доступа к ядру до уровня, превышающего то, что Postgres пытается выделить. (Вы также можете уменьшить общие настройки буферов или максимальных подключений в postgresql.conf, чтобы заставить Postgres запрашивать меньше памяти, но значения по умолчанию для большинства случаев использования довольно малы.)

Сделать это как одноразовое, продолжающееся до следующей перезагрузки:

sudo sysctl -w kern.sysv.shmmax=12582912
sudo sysctl -w kern.sysv.shmall=12582912

Измените точное число, соответствующее вашим настройкам Postgres; он должен быть больше, чем любой Postgres говорит, что он запрашивает в файле журнала. После выполнения обоих из них вы сможете запустить Postgres.

Чтобы изменения сохранялись при перезагрузке, отредактируйте /etc/sysctl.conf и установите там те же значения.

Ответ 3

Apple документирует, как настроить их для Snow Leopard здесь:

http://support.apple.com/kb/HT4022: Mac OS X Server v10.6: настройка значений сегмента общей памяти

sysctl позволяет временно изменять их.

Ответ 4

Я знаю, что это старый вопрос, но я думаю, что стоит отметить, что , если вы используете PostgreSQL для целей разработки, вам может быть безопасно просто перейти в postgres.conf( каталог данных после того, как вы сделали initdb) и измените переменную shared_buffers на что-то немного ниже. По умолчанию он равен 28 МБ или что-то еще. Но таким образом вы не возитесь с переменными общей памяти.