簡體   English   中英

Django管理員正在緩慢地加載頁面

[英]Django admin is loading pages incredibly slowly

我有一個運行在gunicorn服務器上的django套裝的django應用程序,它需要花費很多時間來加載管理員的每個頁面(列表和編輯視圖)。 具有1條沒有外鍵和可調用對象的單個記錄的表的列表視圖將花費6-8秒,而分頁到50個元素的表的列表視圖將花費25-30秒。

我檢查了已執行的SQL,認為日志記錄模塊具有以下配置,它們似乎還可以,所有SQL的總時間約為十分之二。 該數據庫是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'
)

我希望SQL的總時間將大大少於1秒。 如果不是,是否有很多SQL查詢? 對於您所描述的管理員視圖,您應該查看少於10個SQL查詢。

SQL查詢的數量可能會產生很大的影響,因為Django必須構造它們並構建結果集,而這段時間不包括在SQL查詢給定的時間內。

您應該添加django-debug-toolbar,看看是否能提供一些線索。

其他緩慢來源:

  • 速度較慢的上下文處理器(例如,執行許多數據庫查詢),並且由於它們處於全局TEMPLATE_CONTEXT_PROCESSORS設置中而被執行。 一種解決方案是刪除它們,然后僅將它們添加到需要它們的視圖中,或者使用惰性,以便除非需要,否則它們實際上不會得到評估。

  • 正在添加到HTML頁面頂部且加載緩慢的內容。 使用瀏覽器網絡調試器進行檢查

  • 服務器端其他內容。 使用Python分析來計算時間在哪里。

最終,問題出在服務器上運行的進程消耗了98%的CPU。 因此,與django無關,但以防萬一這對任何人都有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM