LINUX.ORG.RU

Django: проблема с долгим подключением к БД после простоя

 


0

3

Имею приложение на Django и PostgreSQL. Еще имею странную проблему, которая проявляется только когда приложение долго «простаивает» и не обращается к БД. После первого же запроса висит, как будто пытается подключиться к БД, хотя постоянные соединения на настроены (дефолтное поведение Django).

Кто-нибудь с таким сталкивался? Если же запустить несколько воркеров через gunicorn, то тупит несколько запросов, т.к. они попадают на разные ворверы, которые пытаются что-то сделать с БД. Непонятно даже как это дебажить. Запуск через ./manage.py даёт такой же результат

Может просто свопятся они?

gruy ★★★★★
()

Мэнеджер подключений не умеет выполнять какой-нибудь «select1;» каждую минуту? Очень похоже что подключение просто отваливается по таймауту.

anonymous
()
Ответ на: комментарий от anonymous

Подключения к БД? Они и так не постоянные. Дефолтное поведение Django - закрывать соединения после каждого запроса (аки php). Если поставить CONN_MAX_AGE = None (не закрывать никогда), поведение такое же, за исключением того, что в lsof -i tcp:5432 я вижу подключение к БД и оно не отваливается, но приложение всё равно долго тупит после простоя

paganmind
() автор топика

Не знаю как оно точно работает в джанге, но скорее всего есть пулл коннекшенов, в котором выставлен достаточно короткий лайфтам, и когда апликуха твоя простаивает, менеджер пулла их прибивает. Так же лайфтайм конекшенов не должен превышать выставленное в датабазе, иначе менеджер пулла не будет успевать уследить что конекшен сдох и твои запросы будут отваливаться с ошибкой

nikolnik ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.