Django & MySQL - подключение к базе данных по запросу выполняется очень медленно - PullRequest
4 голосов
/ 06 декабря 2011

Мы просто настроили Новый Relic для мониторинга, и он говорит, что 90% нашего времени запроса тратится на MySQLdb:connect - от одной до десяти секунд на запрос!

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

Примечание. Я исключил DNS, поскольку внешние интерфейсы подключаются к БД с использованием числового IP-адреса.

1 Ответ

3 голосов
/ 06 декабря 2011

Проблема в том, что django закрывает соединение при каждом запросе и повторно инициализирует его;поскольку код БД прослушивает сигнал:

signals.request_finished.connect(close_connection) в django/db/__init__.py

Одно из решений - реализовать пул соединений для MySQL с использованием SQLAlchemy , который является наименее навязчивыми самый дружественный апгрейд, который я видел.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...