Не удалось создать сегмент общей памяти. Неудачный системный вызов был shmget. PostgreSQL macOS Mojave. Каталог данных postgres с символическими ссылками

#postgresql

#postgresql

Вопрос:

Это распространенное сообщение об ошибке, и есть много общих ответов, которые у меня не сработали.

Я думаю, что я изолировал эту конкретную проблему от каталога данных PostgreSQL, который был привязан к внешнему жесткому диску.

 FATAL:  could not create shared memory segment: No space left on device
DETAIL:  Failed system call was shmget(key=5432001, size=56, 03600).
HINT:  This error does *not* mean that you have run out of disk space.  It occurs either if all available shared memory IDs have been taken, in which case you need to raise the SHMMNI parameter in your kernel, or because the system's overall limit for shared memory has been reached.
  
 $ sysctl -a | grep sysv
kern.sysv.shmmax: 412316860416
kern.sysv.shmmin: 8
kern.sysv.shmmni: 64
kern.sysv.shmseg: 128
kern.sysv.shmall: 100663296
  
 $ sudo cat /etc/sysctl.conf
kern.sysv.shmmax=412316860416
kern.sysv.shmmin=8
kern.sysv.shmmni=64
kern.sysv.shmseg=128
kern.sysv.shmall=100663296
  

PostgreSQL версии 9.4.15. Из моей конфигурации PostgreSQL

shared_buffers = 128MB

Не знаю, какие другие настройки были бы уместны.

Другие сведения о среде:

Внешний жесткий диск с каталогом данных заполнен только на 50%. Мое использование оперативной памяти, когда это происходит, составляет ~ 60% емкости.

Я не смог определить точный набор шагов, который воспроизводит ошибку. У меня есть внешний жесткий диск с каталогом данных PostgreSQL и локальная папка с другим каталогом данных. В моем проекте я буду ссылаться на тот или иной символ в зависимости от того, какую копию данных я хочу использовать. Насколько я заметил, проблема появляется только тогда, когда я работаю с жестким диском с символической ссылкой и когда я отключаю его без остановки сервера, а затем подключаю его обратно. Но это происходит не каждый раз, когда я выполняю эти шаги.

Я не ожидаю, что кто-либо сможет указать на конкретную проблему, учитывая приведенное выше описание.

Но как я могу получить более полезную информацию в следующий раз, когда я окажусь в состоянии прослушивания? Существуют ли какие-либо системные команды, которые помогли бы определить точную проблему?

… Это происходит либо в том случае, если были использованы все доступные идентификаторы общей памяти, и в этом случае вам нужно повысить параметр SHMMNI в вашем ядре, либо из-за того, что общий системный лимит общей памяти был достигнут.

Как я могу проверить, if all available shared memory IDs have been taken или если the system's overall limit for shared memory has been reached и что мне делать с ответом?