Я использую Django с базой данных Postgres от heroku. В базе данных heroku есть

«ограничение на количество подключений 20» .

Я не понимаю, что это значит.

Как определяется соединение? Каждый раз, когда пользователь посещает мой сайт, я получаю кое-что из базы данных. Это уже соединение, потому что моему веб-сайту необходимо подключиться к базе данных для получения этих данных?

А что будет, если будет достигнуто общее количество подключений? Сайт все еще работает?

4
Nepo Znat 16 Ноя 2018 в 17:58

1 ответ

Лучший ответ

Каждый выполняемый вами запрос устанавливает соединение с базой данных.

Например, если вы хотите получить некоторые данные из своей базы данных, обычно происходит следующее:

1 - Вы выполняете свой запрос на уровне django.

2 - Django переведет ваш запрос на SQL.

3 - Django создает соединение с вашей базой данных.

4 - Ваш запрос будет выполнен в базе данных.

5 - Django получит результат.

6 - Django закроет соединение.

Это ограничение означает, что вы можете иметь только 20 задач, работающих на шагах с 3 по 6 одновременно.

И если вы превысите это ограничение, ваше приложение выйдет из строя или ваше приложение попытается установить соединение (будет ограничение на количество попыток, и вы получите сообщение об ошибке, если вы превысите количество попыток), что приведет к тому, что ваше приложение будет работать медленнее или ломаться по некоторым запросам.

Вам нужно либо обновить свой сервер / получить больше серверов, либо оптимизировать код, чтобы делать меньше запросов (например, объединение запросов).

6
Navid Zarepak 16 Ноя 2018 в 17:21