分析Django
回答
尝试Django Debug Toolbar。它会显示在每个页面上执行的查询以及它们占用了多少时间。这是一个非常有用,功能强大且易于使用的工具。
此外,请从文档中阅读有关Django性能的建议,内容为Database access optimization。
和Django performance tips作者: Jacob Kaplan-Moss。
只需键入 “Django的分析” 谷歌,你会得到这些链接(及以上):
http://code.djangoproject.com/wiki/ProfilingDjango
http://code.google.com/p/django-profiling/
http://www.rkblog.rk.edu.pl/w/p/django-profiling-hotshot-and-kcachegrind/
个人我使用中间件方法 - 即每个用户都可以切换会话中存储的“分析”标志,如果我的分析中间件注意到已经设置了标志,则它使用Python的hotshot模块E本:
def process_view(self, request, view_func, view_args, view_kwargs):
# setup things here, along with: settings.DEBUG=True
# to get a SQL dump in connection.queries
profiler = hotshot.Profile(fname)
response = profiler.runcall(view_func, request, *view_args, **view_kwargs)
profiler.close()
# process results
return response
编辑:对于剖析SQL查询康斯坦丁提到http://github.com/robhudson/django-debug-toolbar是一个很好的事情 - 但如果你的查询都是很慢的(可能是因为有他们的几百或几千个),那么你会等待疯狂的时间,直到它被加载到浏览器 - 然后由于缓慢将很难浏览。另外,django-debug-toolbar在设计上无法提供有用的洞察AJAX请求的内部。
EDIT2:django-extensions有很大的剖析命令内置:
https://github.com/django-extensions/django-extensions/blob/master/docs/runprofileserver.rst
只要做到这一点,瞧:
$ mkdir /tmp/my-profile-data
$ ./manage.py runprofileserver --kcachegrind --prof-path=/tmp/my-profile-data
http://code.google.com/p/django-profile/是一个用户配置文件django应用程序。它不是用来作为分析的Django :) – dzen 2011-03-14 16:52:09
@dzen:哈,好点的,它的意思是:http://code.google.com/p/django-profiling/ :-) – 2011-03-14 18:17:53
如果你想知道如何阅读运行后探查转储'蟒蛇manage.py runprofileserver --prof路径= /路径/到/ dir',按照此博客:http://www.darkcoding.net/software/profiling-django-for-cpu-bound-应用/。 – Neara 2014-03-20 10:16:18
当意见不HTML,例如JSON,使用简单用于分析的中间件方法。
这里有几个例子:
https://gist.github.com/1229685 - 捕获所有SQL调用走进视图
https://gist.github.com/1229681 - 使用的配置文件创建视图
对于分析数据访问的所有方法调用(这是那里的瓶颈在大多数时候)请查看django-live-profiler。与Django调试工具栏不同,它可以同时收集所有请求中的数据,并且可以在生产环境中运行它,而无需太多的性能开销或公开应用内部信息。
不支持1.6及以上,超过一年没有活动。 – 2014-06-07 02:47:27
为您KCacheGrind迷们,我觉得这是非常容易使用Django的梦幻般的测试Client
串联外壳上即时生成配置文件登录,尤其是在生产。我现在已经多次使用这种技术,因为它具有轻触感 - 不需要讨厌的中间件或第三方Django应用程序!
例如,个人资料,这似乎是运行缓慢的特定视图,你可以破解打开外壳并键入此代码:
from django.test import Client
import hotshot
c = Client()
profiler = hotshot.Profile("yourprofile.prof") # saves a logfile to your pwd
profiler.runcall(c.get, "/pattern/matching/your/view/")
profiler.close()
形象化生成的日志,我用hotshot2cachegrind:
但也有其他选择:
无耻的插头插在此处,但我最近为此目的而https://github.com/django-silk/silk。它有点类似于Django的工具栏,但有历史,代码分析和对一切的更细致的控制。
获取中间件问题'没有处理程序可以找到记录器“silk.middleware”' – 2017-08-09 10:20:13
- 1. 用PyCharm分析Django
- 2. 分析Django应用程序
- 3. 分析活Django服务器?
- 4. 集成Django,MongoDB和情感分析(SVM)
- 5. Django的分析模板提取变量
- 6. django gui的数据统计分析
- 7. Django的谷歌分析导入错误
- 8. Django无法解析其余的部分
- 9. Django剖析
- 10. Erlang分析器/分析器?
- 11. SQL 2005分析器分析
- 12. 解析Django Queryset JSON
- 13. 分析
- 14. 分析#
- 15. Django对象数组解析Django
- 16. .NET分配分析
- 17. Django - 在Django中分页1.3
- 18. 多层次分析Meta分析
- 19. 情绪分析与情绪分析
- 20. ocaml分析器和词法分析器
- 21. 如何分析内部Django站点的使用情况?
- 22. 在django-query中实现逻辑分析器
- 23. 解析Django表格中的一小部分
- 24. django是否有用户访问分析中间件或模块?
- 25. 在Django中查看/分析所有数据库访问
- 26. 添加Aldryn谷歌Analytics(分析)的Django CMS
- 27. Django是否有任何统计/分析应用程序?
- 28. 如何分析django调试工具栏的结果?
- 29. 如何设计分析解决方案(Django堆栈)
- 30. Django:无法解析剩余部分(媒体即图像)
当心Django的调试工具栏 - 我在开发过程中把它关掉,页面渲染是显著快上我的(当然低功耗)笔记本 - 看在开发服务器,看看你有多少数据下载。 – 2010-03-02 13:32:58
Django的调试工具栏里帮我看看有多少查询Django的ORM打分贝,我们可以看到select_related()函数做的伎俩击中它少。 – panchicore 2010-03-02 14:20:47
@ dominic-rodger我没有意识到调试工具栏让事情变得缓慢多少。我的SQL查询很小(30毫秒),但CPU时间非常高(800毫秒)。我正在调整的另一个页面的sql时间为300ms,CPU时间为8000ms - 所以我一直试图找到问题的根源。将Django Toolbar关闭正确。 3年后,仍然有关。 – Esteban 2013-01-30 18:59:39