序章


Djangoは、最新のWebアプリを構築するための優れたPythonベースのプラットフォームです。 その最大の強みの1つは、開発者がより速く作業できるようにすることです。

すばらしいアプリを作成してデプロイしました。 物事は素晴らしいですが、今では大量のデータをロードしていて、同時に複数の人に使用させ始めているので、思ったほど速くはありません。

これは一般的な問題です。 幸い、問題を軽減するのに役立つツールがいくつかあります。

まず、より明白な問題のいくつかを確認しましょう。

実際のデータベースを使用する


ローカル開発中、SQLite3に勝るものはありません。 注意しない限り、仮想サーバーでも使用している可能性があります。

SQLite3は、MySQLやPostgreSQLのように複数の同時ユーザーに拡張できません。特に、多くの書き込み操作を実行する操作の場合(セッションを使用している場合は、データベースに書き込みます)。

たとえば512MBのドロップレットなどの低メモリVPSを使用している場合は、MySQLを使用することをお勧めします。 余裕のあるメモリ(2GB以上)がある場合は、PostgreSQLを検討することをお勧めします。PostgreSQLは多くのDjango開発者に好まれているからです。

デバッグモードを無効にする


ローカル開発を行う場合はデバッグモードが絶対に必要ですが、本番サーバーの速度が低下します。 仮想サーバーのsettings.pyを見て、DEBUGがFalseに設定されていることを確認します。 また、TEMPLATE_DEBUGもFalseに設定されているか、DEBUGに設定されていることを確認してください。

デバッグツールバーを使用して、パフォーマンスの問題を特定します


本番サーバーではなく、ローカル開発コンピューターで、 Djangoデバッグツールバーをオンにして、特定の問題を特定します。

これを行うには、 django-debug-toolbar モジュールをインストールしてから、次のようにMIDDLEWARE_CLASSESディクショナリにエントリを追加します。

MIDDLEWARE_CLASSES = (
    # ...
    'debug_toolbar.middleware.DebugToolbarMiddleware',
    # ...
)

また、INTERNAL_IPS変数を作成し、IPアドレスを追加する必要があります。 ローカルで開発している場合、IPアドレスはおそらく127.0.0.1であるため、settings.pyに次のような行を追加します。

INTERNAL_IPS = ('127.0.0.1',)

最後に、次のように、INSTALLED_APPSの最後のアイテムとしてdebug_toolbarを追加します。

INSTALLED_APPS = (
    # ...
    'debug_toolbar',
)

インストールドキュメントには、検討する必要のある詳細とオプションの構成オプションが含まれています。

偶然にこれらの変更を本番環境にプッシュしないでください。 (意図的に行う場合は問題ありません)。

これで、サイトを閲覧しているときに、Webページの横に黒いパネルが表示されるはずです。 あなたが統計と数字とあらゆる種類のこっけいな詳細が好きなら、あなたはそれを気に入るはずです。 また、本番サーバーでこれを望まない理由もすぐにわかります。

https://assets.digitalocean.com/articles/scale_django/img1.png