У меня есть сервер PostgreSQL 9.4, который, похоже, ограничивает количество подключений меньшим, чем то, что я определил в max_connections.
У меня max_connections установлено на 300.
SHOW max_connections;
max_connections
-----------------
300
Тем не менее, я обнаружил, что у меня начинается тайм-аут новых подключений, как только количество активных подключений достигает 100, как измеряется SELECT count(*) from pg_stat_activity;
Пока это число меньше 100, новые соединения работают. Как только он достигает 100, новые соединения терпят неудачу: PG::ConnectionBad: could not connect to server: Connection timed out
(Библиотека Ruby pg)
Кажется, есть исключение для подключений суперпользователя (т.е. я подключаюсь через PgAdmin), так как таким образом я могу превысить порог 100, хотя приложения, не использующие суперпользователей, продолжают время ожидания.
Я не могу понять, в чем может быть основная причина.
Некоторые настройки конфигурации:
max_connections = 300
superuser_reserved_connections = 2
shared_buffers = 1024MB
effective_cache_size = 2048MB
work_mem = 8MB
maintenance_work_mem = 256MB
Я попытался немного повозиться с этими значениями, но безрезультатно.
Другие детали:
free
показывает 2,1 ГБ свободно, 3,5 ГБ, включая буферы / кеш.Возможно ли, что вы ограничили максимальное количество подключений пользователей?Ролевые привилегии
Вы можете изменить это с помощью
ALTER ROLE имя роли CONNECTION LIMIT 300;
Вы тоже увеличили максимальный размер сегмента ядра?
Пытаться:
sysctl -w kernel.shmmax=1258291200