Читал об этом, но не уверен, что полностью понимаю, как работают соединения с Postgres в Rails. У меня до 5 веб-динамов, каждый из которых выполняет 5 процессов (Unicorn), так что будет до 25 подключений, а затем до 50 рабочих динамов через delayed_job, так что будет 75.
Но когда рабочая очередь растет и я запускаю все 50 рабочих динамов, кажется, что я достигаю предела соединения Postgres, равного 128, и я думаю, что это не может быть хорошо.
Может ли веб-динос открывать несколько соединений на процесс? Могут ли рабочие сделать то же самое?
Если это связано с настройкой базы данных пула, то для Unicorn это пул соединений на рабочий процесс или на dyno? Это не ясно для меня (согласно комментариям с Кори), хотя это похоже на рабочий процесс Unicorn.
Есть ли способ установить настройку пула рабочих dynos delayed_job? Я предполагаю, что по умолчанию это тоже 5.
Любые хорошие ресурсы или решения были бы действительно полезны. Похоже, что PGbouncer - это одна из опций, или установка пула из значения по умолчанию 5 на что-то меньшее, например 1 или 2.
РЕДАКТИРОВАТЬ: я по ошибке прочитал журналы NewRelic как мс на транзакцию, но это общая мс для этой категории, так что это не замедляет Postgres, но достижение лимита подключения все еще не идеально.