Иногда наша база данных Postgres падает, и это можно решить только путем перезапуска сервера. Мы попытались увеличить максимальные соединения и Django CONN_MAX_AGE
. Также я пытаюсь узнать, как настроить PgBouncer. Однако я убежден, что основной проблемой должно быть что-то еще, что можно исправить.
Я пытаюсь найти, что это за проблема. Проблема в том, что я не знаю, где или с чего начать смотреть. Вот некоторые сведения:
Ошибки всегда OperationalError: FATAL: remaining connection slots are reserved for non-replication superuser connections
и OperationalError: could not write to hash-join temporary file: No space left on device
. Я думаю, что это вызвано открытием слишком большого количества соединений с базой данных, но мне никогда не удавалось отследить это, когда я отключился, чтобы я мог проверить pg_stat_activity
и посмотреть, какие фактические соединения были активными.
Просмотр журнала ошибок, тот же URL-адрес отображается по большей части. Я проверил журнал nginx, и он перечислен во многих разных строках, что означает, что запрос делается несколько раз за раз, а не Django регистрирует одну и ту же ошибку несколько раз. На все эти запросы отвечает 499 Закрытый клиентский запрос . В дополнение к этому тому же URL, есть, конечно, несколько запросов других пользователей, пытающихся получить доступ к нашему сайту.
Я должен упомянуть, что логика, которую сервер обрабатывает, когда запрашивается URL, довольно проста, и я вижу,ничего подозрительного, что могло бы вызвать сбой базы данных. Тем не менее, по какой-то причине страница загружается медленно в работе.
Я знаю, что это очень расплывчато и очень мало с чем работать, но я не привык работать сисадмином, я изучал подобные вещи только в колледже. и до сих пор я работал только разработчиком.