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' )