Ubuntu
如何模擬高頻寬流量進行伺服器測試
我正在做一個類似 CDN 的個人項目,我想對我的伺服器進行壓力測試,這是一個在 10Gbps VPS 上執行的最小 nginx+nodejs+ubuntu。我想模擬一些看起來更像伺服器預期用途的東西:大約 10GB 的二進制數據由 nginx 後面的 nodejs 提供。與伺服器的連接可以是 http 或 https,每個連接都是持久的,並以 1MB 的塊突發請求數據,每個連接總共約 10-20MB。有些連接速度可能為 100mbps,延遲較低(佔連接的 20%),有些連接速度可能慢至 100-200kbps,而 rtt ping 時間為 500ms(佔連接的 5%)。我的目標是產生接近 10Gbps 理論限制的流量,並嘗試監控伺服器統計數據,收集分析數據以了解我的東西在負載下是如何工作的。連接到我的伺服器的客戶端也是我自己的程式碼。在所有客戶端上,我想保存日誌,然後組合併分析它們以估計當來自我的伺服器的組合請求負載是理論限制的 50%、75%、… 90%、100%、120 時整個系統的一般結果% 等。在這些負載期間,我的目標也是觀察伺服器:記憶體使用、cpu 負載、連接斷開率、驗證日誌記錄(以確保組合的客戶端記錄與伺服器記錄的結果匹配)。
我的計劃是首先在 1Gbps 伺服器上進行測試(以及在不同地理位置的 10-15 x 100mbps 伺服器來模擬客戶端)。由於我控制客戶端,我只會讓它們執行特定場景並以不同的速度進行節流下載以模擬慢速客戶端。
如果您需要對此類設置進行壓力測試,您會怎麼做?我的方法有什麼問題嗎?為什麼?
您的方法非常好,我只是建議在現有工具的基礎上添加幾個測試場景:
- 從一個使用者開始,逐漸增加負載,直到響應時間超過可接受的門檻值——所謂的壓力測試
- 將您的系統置於預期的使用者數量(或更多)的長時間負載下(過夜或週末) - 所謂的浸泡測試- 這是辨識記憶體洩漏的最佳方法
- 作為壓力測試的補充,您可能還想查看當負載減少(恢復正常)時會發生什麼:如果系統自行恢復並開始按預期執行,或者性能問題是致命的。
查看您需要了解的 4 個耐力測試技巧,以更全面地了解上述技術。