2013-10-01 36 views
8

我正在研究包含多個應用程序服務器,MySQL服務器等的大型Django(v1.5.1)應用程序。在將NewRelic推出到所有我想要的服務器之前瞭解每筆交易會產生什麼樣的開銷。期待量化python django應用程序中的NewRelic監控的性能開銷

如果可能的話,我想甚至區分應用程序跟蹤和服務器監控是最理想的。

有沒有人知道這個普遍接受的數字?也許一個網站正在進行這種調查或步驟,以便我們可以自行進行調查。

回答

8

對於Python代理程序和Django Web應用程序的監視,每個請求的開銷是由在被檢測的特定請求中執行多少個函數所驅動的。這是因爲完整的分析沒有完成。相反,只有感興趣的特定功能才能被檢測到。因此,只有爲這一個函數調用執行包裝程序的開銷,而不是嵌套的調用,除非這些嵌套函數反過來被嵌套。

在Django中測試的特定函數是中間件和視圖處理函數,加上模板渲染以及處理每個模板塊的模板渲染器中的函數。與Django本身不同,您可以使用低級數據庫客戶機模塊函數執行查詢,以及執行查詢,以及memcache和web外部等。

這是什麼意思,如果對於特定的Web請求執行只通過100個儀表功能,那麼只有那些會產生額外開銷的執行。相反,如果你的視圖處理程序執行了大量不同的數據庫查詢,或者你有一個非常複雜的模板被渲染,那麼被檢測的函數的數量可能會更多,因此該Web請求的開銷會更大。也就是說,如果你的視圖處理程序正在做更多的工作,那麼它通常會有比較複雜的響應時間更長的響應時間。

換句話說,每個請求的開銷並不是固定的,並且取決於正在完成多少工作,或者更具體地取決於調用多少工具。因此不可能對事物進行量化,並給您一個固定的每個請求數量的開銷。

大家都說,會有一些開銷,而目標的一般目標範圍是5%左右。

通常會發生的情況是,從具有性能指標獲得的洞察力意味着對於大多數客戶而言,通常會有一些非常容易的改進,這些改進幾乎可以立即發現。做出這樣的改變後,響應時間可以很快被降低到低於開始監測之前的水平,所以當你沒有監測時,你最終會領先於你開始的位置。隨着進一步的挖掘和調整,改進可能會更加劇烈。注意提供的性能指標的某些方面,您還可以更好地調整您的WSGI服務器,並可能更好地利用它並減少所需的主機數量,從而降低託管成本。

+0

該方法的一個很好的概述,以及在處理django視圖基礎架構時需要考慮的一些事情。我們看到的響應時間在3-5%的範圍內,並且在不同服務器配置之間的噪聲範圍之內(注意:動態cpu縮放關閉實際上是對性能的更大影響)謝謝Graham! – redfive

+1

你會建議在一個多服務器負載平衡設置(4個相同的網絡服務器圖像),以禁用所有的代碼跟蹤和sql查詢監控? – Ray