Соединения драгоценного камня Ruby PG не закрываются Соединения драгоценного камня PG не закрываются - PullRequest
0 голосов
/ 20 ноября 2018

PostgreSQL установлено на моей рабочей станции, и я размещаю веб-сайт администратора (Sinatra с использованием гема PG на nginx), доступ к которому есть только у меня.

Время от времени я получаю следующую ошибку:

PG::ConnectionBad - FATAL:  sorry, too many clients already

max_connections действительно установлен на 100, но я использую два на любой странице в любое время.Глядя на pg_stat_activity, я вижу два простых SELECT, которые не являются проблематичными:

SELECT * FROM twils ORDER BY id DESC LIMIT 30   client backend
SELECT mdate FROM params WHERE mkey = $1    client backend

Оба они завершены до того, как страница успеет даже отрендерить (сопоставимая скорость) и не должны оставатьсяоткрыть.Так что я либо ошибаюсь, что мне нужно принудительно закрыть их, либо они не закрываются в конце страницы, в основном сборщик мусора .

Поскольку PG соединения не имеют состояния и не переносятся со страницы на страницу, у меня сложилось впечатление, что конец страницы означает, что все соединения закрыты для пользователя.Я думал, что это было автоматически.Я ошибаюсь, чтобы предположить это?Должен ли я сознательно выполнять conn.close или conn.finish для каждого соединения?

conn = PG.connect( dbname: 'hq' )
...