我目前有一個django網站,它有點慢,所以我想了解發生了什麼。我怎麼可以分析它,以便區分之間:網絡 我使用的服務器端執行的JavaScript 如何爲網站執行分析?
- 效果)和sql訪問。
- 任何其他影響我不考慮由於我今晚發生的大規模頭痛。
當然,對於他們中的一些,我可以使用Firebug,但有些效果是相關的
感謝
我目前有一個django網站,它有點慢,所以我想了解發生了什麼。我怎麼可以分析它,以便區分之間:網絡 我使用的服務器端執行的JavaScript 如何爲網站執行分析?
當然,對於他們中的一些,我可以使用Firebug,但有些效果是相關的
感謝
客戶端:
服務器端(我假設你坐在一些UNIX的一致好評服務器上):
檢查與小靜內容的Web服務器(一個小GIF或少許的HTML頁面),使用Apache工作臺(ab,apache web服務器包的一部分)或httperf,服務器應該能夠每秒響應至少100個請求(當然,這很大程度上取決於測試內容的大小,web服務器類型,硬件和其他東西,所以不要認真對待這100個)。如果這看起來不錯,
測試的Django與「靜態視圖」 ab
或httperf
(一個,這並不使用數據庫對象),如果那是慢的,你需要更多的CPU功率的提示。用top
檢查服務器上的CPU利用率。如果可以,問題可能出在Web服務器執行python代碼的方式
如果服務半靜態內容正常,您的問題可能是數據庫或IO綁定。數據庫問題是一個廣泛的領域,這裏有一些一般性的建議:
iostat
檢查I/O吞吐量。如果你看到很多的寫入,那麼你可以獲得更好的光盤子系統,更快的RAID,SSD硬盤驅動器......或優化你的應用程序以減少寫入。,如果你讓我們知道你用什麼硬件/軟件,我也許能夠提供更多的建議
編輯/ PS:忘了一件事:當然你的應用程序可能有一個不好的設計,並做了很多不必要的/低效的事情...
(因爲它做緩慢的網絡訪問,例如JavaScript的可能出現慢)看看的Django debug toolbar - 這可以幫助您處理服務器端代碼(例如,數據庫查詢運行的時間以及它們花費的時間);並且通常是Django開發的一個很好的資源。
您可以用yslow進行配置的其他非Django特定位。
有各種工具,但這樣的問題不難找到,因爲他們很大。
您遇到問題,並且在刪除它時會遇到加速問題。假設加速是一些因素,比如2x。這意味着該計劃花費了50%的時間等待緩慢的部分。我所做的只是停下來幾次,看看它在等待什麼。在這種情況下,我會看到問題的50%,我停止它。
首先,我會在客戶端執行此操作。如果我看到這50%是花在等待服務器上,那麼我會嘗試在服務器端停止它。然後如果我看到它正在等待SQL查詢,我可以看看那些。
我幾乎肯定會發現,正在請求的工作量比實際需要的要多。它通常不像「熱點」或「算法」那樣深奧。它通常是愚蠢的,就像在多次查詢時進行多次查詢,以避免必須編寫代碼來保存第一個查詢的結果。
首先第一件事情;確保你知道哪些頁面很慢。你可能會感到驚訝。我建議django_dumpslow。
當然,您應該在實時網站上執行這種分析,因爲它通常是真實數據的位置,但我也認爲這不是特別安全......標準解決方案是什麼?用假查詢打網站(我記得有一個實用程序)? – 2009-11-07 14:26:35
您不必在實時網站上執行django-debug-toolbar的內容,但您可能想在您的實時網站上運行yslow。我在開發服務器上使用了django-debug-toolbar。不要將它用於絕對數字('x'需要'y'秒),而是用於查詢的相對時間等。這對於確定特定視圖是否發出比需要的更多數據庫查詢特別有用。 – 2009-11-07 14:32:55