2008-12-12 83 views
15

我有一個新的django 1.0安裝和一個簡單的頁面服務需要5秒加載。在我的同事的電腦上,幾乎沒有時間。django在我的機器上非常慢

開始使用

 
python manage.py testserver 

我可以看到每個GET請求(PNG圖像和樣式表)需要大約一半的第二服務器。我認爲有關的另一個奇怪的事情是,我的機器上的應用程序的功能測試運行速度慢得多(比我的同事的機器慢100倍)。當我將應用程序設置爲使用sqlite時,它們運行得非常快。我想感謝的是,sqlite並沒有太大的改變加載頁面所需的時間,但它確實加快了服務器的啓動速度。

它看起來像IO問題,但我沒有看到我的機器上的一般性能問題,除了django至少。

Django在python2.4上運行,我正在運行Vista。我也檢查了python2.5。

謝謝你,這肯定是一個DNS問題,因爲頁面加載很快,只要 而不是http://localhost:8000/app我去http://127.0.0.1:8000/app

但是它可能造成什麼?我的主機文件只有兩個項目:

 
127.0.0.1 localhost 
::1   localhost 
+0

這是您第一次請求該頁面或每次都是?另外,當你使用runserver時它是一樣的嗎? – 2008-12-12 14:25:21

+0

這是最愚蠢的錯誤,但我一生都遇到過!我的主機文件是空的,因爲在Windows 7中,這兩行是在[在DNS服務器本身]處理的(http://serverfault.com/questions/4689/windows-7-localhost-name-resolution-is-handled-within- DNS-本身-爲什麼)。和相同的症狀!添加「127.0.0.1 localhost」行可以解決它。謝啦! – 2017-03-04 19:21:15

回答

17

Firefox在某些Windows機器上瀏覽本地主機時出現問題。你可以通過關閉ipv6來解決這個問題,這並不是真正的建議。直接使用127.0.0.1是解決問題的另一種方法。

+0

即使localhost位於主機文件中?有趣的... – Powerlord 2008-12-15 14:54:57

0

禁用防病毒掃描&看看是否有差別。它也可能是由Vista引起的。升級到最新的服務包並重試。

2

我認爲它是開發服務器,它沒有針對速度和安全性進行優化。我注意到專門提供靜態文件(即媒體)速度很慢。

3

既然你報告你的朋友的機器沒有延遲,我假設你和他是可比的電腦,它可能是一個DNS相關的問題。嘗試將客戶端和服務器的IP地址添加到服務器的主機文件中。

如果你在* nix上運行Django,它是/etc/hosts文件。如果在MS Windows上運行它,它是%WINDIR%\SYSTEM32\DRIVERS\ETC\HOSTS文件。 (它們是文本文件,可以通過您最喜歡的文本編輯器進行編輯。)

+0

5秒延遲總是聽起來像名字解決問題給我。 – 2008-12-12 17:55:14

1

如果一切都失敗,您可以隨時cProfile您的應用程序,看看究竟是哪裏的瓶頸。

1

我以前有過同樣的問題。它可以通過從主機文件中刪除以下行來解決。

::1   localhost 

一旦沒有了,你應該可以很快地再次使用本地主機。

2

也有同樣的問題,我已經注意到它在Vista和Windows 7機器上的Firefox。訪問開發服務器127.0.0.1:8000解決了這個問題。

0

要完全繞過本地主機而不更改主機文件或Firefox中的任何設置,您可以安裝插件Redirector並制定規則將本地主機重定向到127.0.0.1。使用這些設置

Include pattern : http://localhost* 
Redirect to  : http://127.0.0.1$1 

將其他字段留空。

7

這些職位都不幫我。在我的具體情況下,Justin Carmony給了我答案。

問題

我被映射[主機名]。當地在我的/ etc到127.0.0.1/hosts文件,便於開發目的和DNS請求的解析服用5秒。有時他們會很快解決,有時他們不會。

解決方案

蘋果採用。本地上做新的雪豹建立一些神奇的Bonjour(我想我開始更新到10.6.8之後注意到它)和Mac OS X Lion的。如果您更改開發主機名以本地開始,而不是以本地結束,則應該全部設置。此外,您幾乎可以使用除本地以外的任何TLD,並且不會發生衝突。

test.local將變成:

  • local.test.com
  • test.dev
  • 測試[什麼,但當地]

。並且您的主機文件條目將爲:

local.test.com 127.0.0.1 

注:該方案具有[主機名] .com上,這使得它更容易地指定一個應用域名爲Facebook的API的一個子域的好處是,等

可能還需要你更新/ etc/hosts中

1

後運行在終端的良好措施dscacheutil -flushcache我有同樣的問題,但它是由mysqld的造成的。

該應用程序在生產中工作得非常快,在同一臺主機上使用wsgi和mysql服務器,但使用django runserver選項和遠程mysql服務器開發環境變慢。

我發現使用「SHOW PROCESSLIST」,在數據庫連接在那裏停留在狀態「登錄」對用戶「未認證用戶」,這讓我注意到問題,即在認證過程。

尋找真正的問題,我終於發現了mysqld的試圖讓我的IP的DNS名稱和禁用名稱DNS解析,我解決了這一問題。

要做到這一點,你可以加入這一行到我。CNF文件:

跳過名稱解析

0

我得到了同樣的問題。

的解決方案是:

  • 我試圖localy啓動在usualy部署在生產Web服務器版本。
  • 在生產中的靜態文件是由一個Apache的配置,而不是與Django的靜態送達服務

所以我只是註釋去掉,回到我的靜態服務的URL:/

1

升級到Django的1.3或更高版本。

如果您在2012年仍然存在此問題(使用Chrome),請確保您正在升級。在1.3中,當dev服務器是單線程的時候,bug被修復與slowness有關。

升級解決了我的問題。我正在運行Django 1.2,因爲這是Debian Squeeze的默認設置。