0

ガンコーンサーバーで実行されているdjangoスーツを備えたdjangoアプリケーションを持っていますが、管理者のすべてのページ(リストビューと編集ビューの両方)をロードするのに時間がかかります。外部キーも callable もない 1 つのレコードを持つテーブルのリスト ビューには 6 ~ 8 秒かかり、50 要素にページングされたテーブルのリスト ビューには 25 ~ 30 秒かかります。

次の構成のロギング モジュールで実行された SQL を確認しましたが、問題ないようです。すべての SQL の合計時間は約 2/10 です。データベースはpostgresqlです。

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'file': {
            'level': 'DEBUG',
            'class': 'logging.FileHandler',
            'filename': '/opt/django/myproj/log/debug.log',
        },
    },
    'loggers': {
        'django.db.backends': {
            'handlers': ['file'],
            'level': 'DEBUG',
            'propagate': True,
        },
    },
}

また、念のためUSE_I18Nを無効にして@never_cacheを管理者から削除しようとしましたが、何も変わっていません。

私のサーバーで何が起こっているのかについて誰か提案がありますか?

ありがとう!

私のコンテキストプロセッサ:

from django.conf.global_settings import TEMPLATE_CONTEXT_PROCESSORS as TCP
TEMPLATE_CONTEXT_PROCESSORS = TCP + (
    'django.core.context_processors.request',
    'django.core.context_processors.i18n'
)
4

2 に答える 2

3

SQL の合計時間は1 秒をはるかに下回ると予想されます。そうでない場合、多くの SQL クエリがありますか? 説明したような管理ビューの場合、10 個未満の SQL クエリを表示する必要があります。

Django は SQL クエリを構築して結果セットを構築する必要があり、この時間は SQL クエリに指定された時間に含まれていないため、SQL クエリの数は大きな影響を与える可能性があります。

django-debug-toolbar を追加して、手がかりが得られるかどうかを確認する必要があります。

速度低下のその他の原因:

  • 低速であり (たとえば、大量の DB クエリを実行する)、グローバルTEMPLATE_CONTEXT_PROCESSORS設定にあるために実行されるコンテキスト プロセッサ。解決策は、それらを削除して必要なビューにのみ追加するか、必要でない限り実際に評価されないように遅延を使用することです。

  • HTML ページの先頭に追加され、読み込みが遅いもの。ブラウザのネットワーク デバッガを使用して確認してください

  • サーバー側の何か。Python プロファイリングを使用して、時間が費やされている場所を特定します。

于 2015-01-26T07:28:23.683 に答える
1

最後に、問題はサーバーで実行され、CPU の 98% を消​​費するプロセスでした。したがって、django とは何の関係もありませんが、これが誰かの役に立つ場合に備えて。

于 2015-01-28T07:11:04.710 に答える