Apache-2.2

網路伺服器基準測試的最佳實踐

  • November 5, 2010

我有一個網路伺服器,我希望在對其進行一些優化之前對其進行基準測試,看看它們是否有任何效果。

但是,我想知道基準測試的最佳實踐是什麼?

例如,一位同事告訴我將這台機器與本地網路上的另一台機器進行基準測試,以消除網路流量問題。

但是,我正在考慮使用異地機器進行基準測試,因為我想看看優化是否會對實際情況產生任何影響。

我認為許多速度調整都與優化網路連接有關。例如,在 Apache 中,KeepAlive 值允許瀏覽器使用單個 TCP 連接來請求多個對象,而不是為每個資源打開和關閉一個連接。

如果測試是在本地網路連接上完成的,那麼這個調整不會有太大的不同,對吧?最小化 js/css 和從 HTML 中刪除空格/註釋也是如此。

另一方面,我確實看到了網際網路流量的問題,每次基準測試執行時都是一致的。我真的不知道數字的變化是來自調整還是兩者之間的伺服器增加或減少了負載。

誰是對的?基準測試的最佳實踐是什麼?我們應該兩者都做嗎?

tl;dr - 我應該使用本地網路/異地/或兩者上的機器進行基準測試嗎?

這在很大程度上取決於您的網站。進行離線和現場基準測試都不會受到傷害。但是,要調整什麼以及如何測試?

如果您主要提供靜態內容或一些非常簡單的動態內容並且以瘋狂的速度這樣做,那麼在 Apache 超時/核心級別進行調整是有意義的。

如果您有一個動態站點,那麼調整很快就會變成另一種野獸。當然,進行所有這些 Apache 和核心級別的優化仍然是一件明智的事情,但不要被那些愚弄和煙霧鏡像。

在進行性能調整/測試時,始終首先處理最慢的部分。對於動態站點,真正的瓶頸很可能是 1) 數據庫或 2) 您的站點正在執行的腳本。

如果最慢的部分是數據庫,那麼在使數據庫快速執行之前對 Apache 進行性能調整是沒有意義的。除此之外,您還需要確保擁有適當的記憶體技術,並儘可能執行memcached或類似的。

所以,這就是關於基準和調整的內容。現在,如何進行基準測試?

我喜歡執行兩種基準測試。如果這些數字是已知的——比如說,一個網站正在改版,所以你知道舊網站的唯一訪問者、頁面載入和類似的統計數據——我會執行一個與目前網站相似的實際基準。我還以類似的速率 * 2 對其進行基準測試,看看它是否能承受一點未來的增長。

我喜歡執行的另一種基準測試是吸煙和燒毀網站。我將通過盡可能快地執行基準測試並處理大量並發請求來折磨它。如果它可以忍受它,很好,如果它不能,我發現什麼是突破點。

我喜歡的工具:ab、siege、JMeter。

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