分析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