2009-09-17 90 views
5

我打算部署一個Django支持的站點。但是我對Web服務器的選擇感到困惑,其中包括apache,lighttpd,nginx等。如何評估Web服務器的性能?

我讀過一些有關這些選擇的性能的文章。但似乎沒有人同意。所以我想知道爲什麼不自己測試性能?

我無法找到有關性能測試Web服務器最佳方法的信息。所以我的問題是:

  1. 是否有任何簡單的方法來測試沒有生產站點的性能?
  2. 或者我可以有一種方法來模擬繁忙的交通進行公平考試嗎?
  3. 我該如何保持測試公平並接近生產情況?

試驗結束後,我想弄清楚:

  1. 爲什麼有的者說提供靜態文件時,Nginx已經有更好的表現。
  2. 每個Web服務器的CPU和內存需求。
  3. 我最好的選擇。

回答

3

工具,比如ab常用對測試有多少你可以負載需要從一次請求的毆打,旁邊仙人掌/穆寧/系統監視工具或選擇,你可以生成系統負載&請求/秒的數據。問題在於很多人都沒有意識到他們需要請求很多不同的請求,因爲代碼的不同部分執行需要不同的時間。分析和基準代碼,而不是要求也很重要,大量的民間有already done so for djangobenchrun也不是一個壞的工具。

另一個問題是每個頁面視圖需要多少個HTTP請求。請求數量越少,處理速度就越快,這是讓網站能夠承受大量流量的關鍵,因爲您可以更快地完成並關閉連接,您可以更快地爲新網站分配資源。

就Web服務器的一般速度而言,不言而喻,代理服務器(在您的最後運行)將始終比具有靜態內容的Web服務器執行得更快。至於Apache vs nginx關於你的django應用程序,似乎mod_python確實比nginx/lighty + FastCGI更快,但這並不奇怪,因爲不管任何加速的CGI,CGI仍然很慢。在web服務器上執行和緩存代碼並讓它管理它總是更快(mod_perl vs使用CGI,mod_php vs CGI等),如果你做得對。

+2

nginx的/萊蒂+ WSGI的問題上運行得更深一些,比你想象:http://blog.dscpl.com.au/2009/05/blocking-requests-and-nginx-version-of.html – 2009-09-17 10:00:11

1

您需要在某個機器上設置您選擇的Web服務器+網站,最好是具有類似硬件規格的物理機器,最終將部署到該機器。

然後,您需要使用負載測試框架,例如The Grinder(免費)來模擬許多用戶同時使用您的站點。

負載測試框架應該在單獨的機器上,您應該監視這些機器的網絡和CPU使用情況,以確保測試的限制因素實際上是Web服務器而不是您的負載注射器。

除此之外,它只是改變了內容和監控響應時間,吞吐量,內存和CPU的使用等等,看看他們如何變化取決於你使用的Web服務器和您正在主持什麼樣的內容。

2

Apache JMeter是用於壓力測試Web應用程序的優秀工具。它可以用於任何Web服務器,而不僅僅是Apache。