Довольно часто встречаю проблему связанную с тем, что PostgreSQL имеет в стандартной настройке 100 разрешенных подключений к базе.
Бывает что этих подключений не хватает. и например, вы можете решить ее поставив значение в 2000 подключений.
Но иногда и этого не хватает, и например вы ставите значение в 5000 или 10000 тысяч, и рестартуете PostgreSQL. Но он не запускается.
В логах пишет следующие ошибки:
FATAL: could not create semaphores: No space left on device
DETAIL: Failed system call was semget(5432127, 17, 03600).
HINT: This error does *not* mean that you have run out of disk space.....
Решается эта проблема следующим образом. Нужно выполнить команду от пользователя root:
sysctl -w kernel.sem="250 32000 32 1000"
И можно перезапускать PostgreSQL с количеством подключений равным в 10000, и все будет работать.
Но после перезагрузки компьютера, эти настройки слетают. Чтобы не слетали, нужно в конце файла /etc/sysctl.conf прописать:
kernel.sem=250 32000 32 1000
И перезагрузить компьютер.
Примечание: если вы захотите увеличить количество подключений еще больше, то тогда в файле /etc/sysctl.conf в строчке
kernel.sem=250 32000 32 1000 вы должны изменить последнее число. Например вместо 1000 поставить 10000.
p.s. На момент написания инструкции, проверял ее на Centos 7.4.1708, но она плюс минус без проблем должна подходить и для Ubuntu