Я использую Django 1.5.4 с PostgreSQL 9.2.4.-2 через psycopg2 2.5.1.
В какой-то момент я заметил, что мой сайт на Django стал очень медленным — загрузка небольших страниц всего несколькими легковесными запросами занимает около 2-3 секунд.
Панель инструментов Django-debug говорит:
241,70 ms (161 queries)
- время запроса
time 2992ms
- общее время загрузки страницы
Итак, запросы не должны быть проблемой... Но это не так! Я настроил ведение журнала запросов postgresql и получил следующее:
[LOG ENTRY] 2013-09-18 11:17:05.148 MSK 10304 127.0.0.1(38834)LOG: duration: 0.762 ms statement: SELECT ...
[LOG ENTRY] 2013-09-18 11:17:05.155 MSK 10304 127.0.0.1(38834)LOG: duration: 0.086 ms statement: SHOW default_transaction_isolation
[LOG ENTRY] 2013-09-18 11:17:05.158 MSK 10304 127.0.0.1(38834)LOG: duration: 0.804 ms statement: SELECT ...
[LOG ENTRY] 2013-09-18 11:17:05.164 MSK 10304 127.0.0.1(38834)LOG: duration: 0.092 ms statement: SHOW default_transaction_isolation
[LOG ENTRY] 2013-09-18 11:17:05.168 MSK 10304 127.0.0.1(38834)LOG: duration: 0.757 ms statement: SELECT ...
[LOG ENTRY] 2013-09-18 11:17:05.175 MSK 10304 127.0.0.1(38834)LOG: duration: 0.085 ms statement: SHOW default_transaction_isolation
[LOG ENTRY] 2013-09-18 11:17:05.178 MSK 10304 127.0.0.1(38834)LOG: duration: 0.779 ms statement: SELECT ...
[LOG ENTRY] 2013-09-18 11:17:05.185 MSK 10304 127.0.0.1(38834)LOG: duration: 0.091 ms statement: SHOW default_transaction_isolation
[LOG ENTRY] 2013-09-18 11:17:05.190 MSK 10304 127.0.0.1(38834)LOG: duration: 1.492 ms statement: SELECT ...
[LOG ENTRY] 2013-09-18 11:17:05.197 MSK 10304 127.0.0.1(38834)LOG: duration: 0.090 ms statement: SHOW default_transaction_isolation
После моего целевого запроса есть запрос SHOW default_transaction_isolation
. Лог говорит, что для выполнения этого странного запроса требуется 0,086 мс, но он создает вокруг него задержки около 10 мс:
- запрос №1 завершен 11:17:05.148
- странный запрос
- запрос №2 завершен 11:17:05.158
Кто-нибудь знает, является ли это ошибкой django, psycopg, postgres или любого другого приложения? Как я могу исследовать это?
UPD Проект Pure Django (только Django, postgresql, psycopg2) выполняет запросы без этой ошибки. Возможно, что-то есть в приложениях проекта или сторонних приложениях. Я пытаюсь провести расследование.