django-debug-toolbar: django開發之性能強大的檢測工具

django-debug-toolbar

介紹

Django 是一個 Python 重量級 Web 框架。php

官網描述:Django 的使用可以容易的以更少的代碼更快地構建更好的 Web 應用程序html

調試與優化時,咱們經常想知道好比如下問題:python

  • 執行了多少條 SQL 語句,花費的時間,每次每條語句查詢的時間
  • 渲染頁面的模板是哪些,渲染時間
  • 緩存是否影響性能

django-debug-toolbar 是一款很是強大的 Django 的性能檢測工具git

安裝

下載 django-debug-toolbar

pip install django-debug-toolbar
複製代碼

修改 setting.py

保證開啓 debug

DEBUG = True
複製代碼

INSTALLED_APPS 中加入 debug-toolbar

INSTALLED_APPS = (
    ......
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'library.apps.libraryConfig',
    'debug_toolbar',
)
複製代碼

添加中間件

MIDDLEWARE = [
    'debug_toolbar.middleware.DebugToolbarMiddleware',
     ...... 
     ......
]
複製代碼

配置 URL

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

  1. 安裝 djdt_flamegraph

  2. setting.py 中進行以下配置添加 'djdt_flamegraph.FlamegraphPanel' 到面板中:

    DEBUG_TOOLBAR_PANELS = [
     'debug_toolbar.panels.versions.VersionsPanel',
     'debug_toolbar.panels.timer.TimerPanel',
     …………………………
     …………………………
     'djdt_flamegraph.FlamegraphPanel',
    ]
    複製代碼
  3. 啓動項目

    python3 manage.py runserver --nothreading --noreload 0.0.0.0:8000
    複製代碼
  4. 效果:

正常狀況應該是有火焰圖的,這多是配置或者 windows 系統的緣由,可是第三方面板插件就是這麼添加使用的,若是使用了 MongoDB 數據庫,也有相應的第三方插件用於觀察調試:MongoDB panel for the Django Debug Toolbar

用途

主要有如下功能,功能根據本身的監控需求能夠擴展

  • 監控 sql 語句操做
  • 監控 CPU 運行狀況
  • 靜態文件使用狀況
  • 模板使用狀況

參考

Django Debug Toolbar 1.10.1 documentation

Django-debug-toolbar 的安裝使用及捕獲ajax請求的處理辦法

Django + DebugToolbar構建全棧WEB開發 – 滴滴雲博客

相關文章
相關標籤/搜索