【发布时间】:2012-02-20 13:50:36
【问题描述】:
我正在尝试找出我在使用 Django 时遇到的一些性能问题。从我单击刷新到浏览器得到响应的时间似乎有 600-800 毫秒的延迟。
我设置了一个简单的视图和配置文件中间件,这是视图和结果:
视图函数:
def test(request):
return HttpResponse("It works")
个人资料结果(我用http://www.djangosnippets.org/snippets/186/):
9 function calls in 0.000 CPU seconds
Ordered by: internal time, call count
ncalls tottime percall cumtime percall filename:lineno(function)
1 0.000 0.000 0.000 0.000 /usr/local/lib/python2.6/dist-packages/Django-1.3.1-py2.6.egg/django/http/__init__.py:487(__init__)
1 0.000 0.000 0.000 0.000 /home/mysite/mysite/mysite/map/views.py:19(test)
1 0.000 0.000 0.000 0.000 /usr/local/lib/python2.6/dist-packages/Django-1.3.1-py2.6.egg/django/http/__init__.py:532(__setitem__)
3 0.000 0.000 0.000 0.000 /usr/local/lib/python2.6/dist-packages/Django-1.3.1-py2.6.egg/django/http/__init__.py:517(_convert_to_ascii)
2 0.000 0.000 0.000 0.000 /usr/local/lib/python2.6/dist-packages/Django-1.3.1-py2.6.egg/django/utils/functional.py:274(__getattr__)
1 0.000 0.000 0.000 0.000 /usr/lib/python2.6/Cookie.py:573(__init__)
0 0.000 0.000 profile:0(profiler)
---- By file ----
tottime
0.0% 0.000 /usr/local/lib/python2.6/dist-packages/Django-1.3.1-py2.6.egg/django/utils/functional.py
0.0% 0.000 /usr/local/lib/python2.6/dist-packages/Django-1.3.1-py2.6.egg/django/http/__init__.py
0.0% 0.000 /usr/lib/python2.6/Cookie.py
0.0% 0.000 /home/mysite/mysite/mysite/map/views.py
---- By group ---
tottime
0.0% 0.000 /usr/local/lib/python2.6/dist-packages/Django-1.3.1-py2.6.egg/django/utils
0.0% 0.000 /usr/local/lib/python2.6/dist-packages/Django-1.3.1-py2.6.egg/django/http
0.0% 0.000 /usr/lib/python2.6
0.0% 0.000 /home/mysite/mysite/mysite/map
因此,分析器没有返回任何数字,但 Chrome 报告从请求资源到实际获得任何响应有 647 毫秒的延迟。我对服务器的 ping 时间约为 50 毫秒。有什么想法可以让我获得更好的分析,以便我可以看到 Django 中的哪个位置导致了这种减速?
我的 WSGI 配置。我正在使用带有 uwsgi 的 Cherokee。
import os
import sys
path = '/home/mysite/mysite/mysite/'
if path not in sys.path:
sys.path.append(path)
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
我在不同的计算机和不同的网络上看到了这种延迟(20 毫秒内)。当我只使用 manage.py runserver 时,我也会看到它。
【问题讨论】:
-
您有多少次请求获取这些全为零的分析编号? “Chrome 报告延迟 647 毫秒”。你测量过你的电脑有多慢吗?网站的大部分缓慢都在桌面上,而不是网络上。
-
您使用的是什么网络服务器?您是否尝试过使用 apache-utils 等实际的分析工具?
-
我不知道,但这里有一个线索:可能是在您的分析器激活之前花费了时间。
-
你好,S.Lott - 每当我跑到那个视图时,我都会得到全零。实际页面浏览量返回非零数字,但我想要一些非常简单的东西。 jpic - 这就是我的想法,但我不确定如何在我所做的之外描述它。我也尝试分析 manage.py runserver,但它没有给我任何关于实际 Django 系统的信息,它似乎只是 runserver 启动的配置文件。
-
请从您的设置中显示 MIDDLEWARE_CLASSES 列表
标签: python django performance profiling