4

我正在使用 Django 1.5.4 和 PostgreSQL 9.2.4.-2 到 psycopg2 2.5.1。

从某个时间点开始,我注意到我的 Django 站点变得非常缓慢 - 加载只有几个轻量级查询的小页面大约需要 2-3 秒。

Django-debug-toolbar 说:

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)执行查询时没有该错误。也许项目的应用程序或第三方应用程序中有一些东西。我正在尝试调查。

4

1 回答 1

7

我花了几天时间才发现问题的根源。由于我的错误猜测,花了这么多时间:我确定问题是由数据库或数据库-python 连接库引起的。

原因是django-debug-toolbar - 据我了解,它对 SQL 执行时间的测量通常会导致性能不佳。

总而言之,如果您的 Django 站点速度很慢,请检查是否DEBUG = Falsedjango-debug-toolbar关闭。

于 2013-09-18T10:51:48.537 回答