Django 是一個 Python 重量級 Web 框架。php
官網描述:Django 的使用可以容易的以更少的代碼更快地構建更好的 Web 應用程序html
調試與優化時,咱們經常想知道好比如下問題:python
django-debug-toolbar 是一款很是強大的 Django 的性能檢測工具git
django-debug-toolbar
pip install django-debug-toolbar
複製代碼
setting.py
DEBUG = True
複製代碼
INSTALLED_APPS
中加入 debug-toolbar
INSTALLED_APPS = (
......
'django.contrib.messages',
'django.contrib.staticfiles',
'library.apps.libraryConfig',
'debug_toolbar',
)
複製代碼
MIDDLEWARE = [
'debug_toolbar.middleware.DebugToolbarMiddleware',
......
......
]
複製代碼
urls.py
文件添加:github
from django.conf.urls import include, url
if settings.DEBUG:
import debug_toolbar
urlpatterns = [
url(r'^__debug__/', include(debug_toolbar.urls)),
] + urlpatterns
複製代碼
python3 manage.py runserver 0.0.0.0:8000
複製代碼
這裏我借用了 github 上的一個 Django 項目做爲實驗: 圖書館借還系統web
效果圖以下:ajax
調試工具欄分兩個階段工做。首先,它在 Django 處理請求時收集數據並將此數據存儲在內存中。接着,當在瀏覽器中打開面板時,它會獲取服務器上的數據並顯示它。若是在瀏覽站點時看到過多的 CPU 或內存消耗,則有必要考慮優化「收集」階段。若是顯示面板很慢,則有必要考慮優化「渲染」階段。sql
django-debug-toolbar 默認將在過去的 10 個請求期間收集的數據保留在內存中。數據庫
能夠在 setting.py
中的 DEBUG_TOOLBAR_CONFIG 中經過添加或者修改如下配置進行更改:django
RESULTS_CACHE_SIZE : 10 (默認)
複製代碼
一些其餘配置請參考:Configuration — Django Debug Toolbar 1.10.1 documentation
django-debug-toolbar 容許加入第三方的面板。
目前提供了許多的插件可參考:Panels
好比使用火焰圖定位 cpu 性能問題可使用:djdt-flamegraph: Flamegraphs for Django Debug Toolbar
在 setting.py
中進行以下配置添加 'djdt_flamegraph.FlamegraphPanel' 到面板中:
DEBUG_TOOLBAR_PANELS = [
'debug_toolbar.panels.versions.VersionsPanel',
'debug_toolbar.panels.timer.TimerPanel',
…………………………
…………………………
'djdt_flamegraph.FlamegraphPanel',
]
複製代碼
啓動項目
python3 manage.py runserver --nothreading --noreload 0.0.0.0:8000
複製代碼
效果:
正常狀況應該是有火焰圖的,這多是配置或者 windows 系統的緣由,可是第三方面板插件就是這麼添加使用的,若是使用了 MongoDB 數據庫,也有相應的第三方插件用於觀察調試:MongoDB panel for the Django Debug Toolbar
主要有如下功能,功能根據本身的監控需求能夠擴展
Django Debug Toolbar 1.10.1 documentation