読者です 読者をやめる 読者になる 読者になる

技術ネタとかの備忘録

最近の技術ネタとかの備忘録を書いていくブログです

Djangoアプリのプロファイル

Djangoのプロファイル方法のメモです。
Heroku上で運用しているDjangoアプリが遅いのでその調査で使用しました。
プロファイルにはdjango-extensionsを使用しました。
RunProfileServer — django-extensions 1.7.7 documentation

環境

  • django - 1.10.5
  • django-extensions - 1.7.7
  • qcachegrind - 16.12.0
  • qt - 5.8

方法

django-extensionsのインストール

pipコマンドでdjango-extensionsをインストールします。

$ pip install django-extensions

settings.pyのINSTALLED_APPSにdjango-extensionsを追加します。

INSTALLED_APPS = [
  ...
  'django_extensions',
]

サーバの起動

runprofileserverコマンドでサーバを起動します。

$ python manage.py runprofileserver --kcachegrind

プロファイル結果の取得

プロファイルしたいページをWebブラウザで表示します。
/tmpディレクトリにprofファイルが出力されます。

$ ll /tmp
...
-rw-r--r--   1 bllinko  wheel  498887  3  8 14:17 root.000812ms.1488950279.prof

プロファイル結果の表示

brewコマンドでqcachegrindとqtをインストールします。

$ brew install qcachegrind qt

qcachegrindコマンドの引数にファイル名を指定して実行します。

$ qcachegrind /tmp/root.000812ms.1488950279.prof

こんな感じに表示されます。 f:id:bllinko:20170308142423p:plain