Apache-2.2

令人不安的 AB 基準測試結果?

  • May 12, 2011

在系統管理員方面,我是一個真正的菜鳥。我正在 EC2 微實例上執行應用程序。

在我公開發布之前,我想確保我達到了最低水平的性能。我正在嘗試一些壓力測試,但我一直在努力尋找好的組合來幫助我了解自己的表現。

我已經測試了可以說是負載最大的頁面,我很好奇這是否足夠適合一個剛剛啟動的網站,最好的情況是,如果媒體恰到好處,一周內可以看到 10k 的唯一身份。

   ab -n 5000 -c 10 http://mysite.com

   requests/sec: 53.36
   time per request:  18.739 ms
   transfer rate: 12.66kb
   total transferred 1215000 bytes

沒有失敗的請求。我的 CPU 最高達到了 49% 左右,而且記憶體沒有太多的負擔。平均負載飆升至 5.70。

95% 的請求在 500 毫秒內得到處理。一個請求耗時 84996 毫秒。

我在 Ubuntu 10.4 上使用 Apache2.x 和 mod_wsgi。我很確定 MPM 是 Prefork。此伺服器處於測試模式,因此沒有外部負載。

並發似乎是這裡的大問題。當我刪除它時,伺服器快如閃電。當我添加超過 10 個並發時,我收到一條錯誤消息:“指定的超時已過期 (70007)”。

這可能都沒有實際意義,因為我才剛剛開始。我很想听聽意見。

謝謝。

在調整 prefork apache 時我會考慮的一些事情:

  • 檢查您的 MaxClients 和 ServerLimit。這告訴您的伺服器一次可以執行多少個程序。您應該根據每個程序執行的記憶體與您的 RAM 限制進行限制。確保為伺服器上執行的其他程序(系統、MySQL 等)留出記憶體
  • 檢查 StartServer、MinSpareServers、MaxSpareServers。確保以足夠的程序啟動伺服器來處理傳入的請求,並確保有足夠的時間來處理負載。創建新執行緒的成本相對昂貴,並且會減慢您的請求。
  • 保持您的 KeepAliveTimeout 非常低。這基本上是在繼續下一個請求之前,程序保持打開的時間足夠長以擷取更多請求。對於前叉,我將我的保持在 2KeepAliveTimeout 2

只是一些指示……希望這會有所幫助

引用自:https://serverfault.com/questions/269117