當 Canal+ 需要保證其串流平台能在大型足球直播中處理數百萬同時觀眾時,團隊並未僅僅運行一個負載測試並寄望於最好的結果。
他們進行了進步性、迭代式的載入行銷活動,針對明確的性能目標,識別並解決了快取和授權 API 的瓶頸,並在單一觀眾調入之前優化了機器規模。結果:直播期間沒有任何意外。不是「比上次少了一些意外。」零。
這個結果並非來自於更辛苦的測試。它來自於運行更聰明 個別 — 係針對服務等級目標(SLOs)而設,該目標以用戶相關的術語明確定義了在系統正式上線前,「足夠好」的具體標準。
對技術領導者而言,這是核心論點:沒有SLOs的負載測試僅是活動。而具備SLOs的負載測試則是治理。 透過 SLOs的負載測試
。 框架:服務指標(SLI)、服務等級目標(SLO)、服務協議(SLA)及錯誤預算
在實踐之前,術語需要精確——因為混亂的定義導致混亂的管理.
Google的SRE文獻提供了最清晰的基礎:
- SLI (服務等級指標): 服務行為的量化度量——請求延遲、錯誤率、吞吐量、可用性.
- SLO (服務等級目標):該 SLI 的目標或可接受範圍。例如:"99.9% 的結帳請求在 30 天的窗口內完成,且時間在 300 毫秒內。"
- SLA (服務水平協議):向外承諾客戶,通常附帶財務懲罰。
- 錯誤預算:這SLO 所隱含的可容許不可靠性. 在 99.9% 的情況下,大約每月停機 43 分鐘。在 99.99% 的情況下,則降至約 4 分鐘.
- 燒錢率: 預算被消耗的速度,是操作緊急性的關鍵信號.
從這種結構中立即衍伸出的一個領導原則是:你的內部 SLO 應該比你的公共 SLA 更嚴格。 Google Cloud 自身的指導說明這一點,搭配了 99.95% 內部 SLO 與 99.9% SLA。這個差距是一個故意的安全緩衝——而對內部 SLO 進行負載測試意味著你可以在修復之前暴露合約風險。
第二個原則同樣重要: SLO 應該以使用者為中心,而不是以基礎設施為中心。 只報告CPU利用率和中位數響應時間的負載測試是在測量方便的事,而不是客戶實際體驗。正確的SLI是那個,即使剛好達到,仍然能讓典型用戶滿意的。
更多資訊: SLO 與 SLA 與 SLI:它們之間的區別是什麼以及為什麼重要
如何改變負載測試設計的SLO
目前的大多負載測試仍然問錯了問題:「我們在實驗室達到的最大 RPS 是多少?」 以 SLO 為導向的負載測試問了更有用的問題集:
- 我們在什麼請求率下停止達到與用戶相關的目標?
- 當我們未達標時,我們錯過預算的錯誤速度快嗎?
- 何種組件會首先飽和,以及當它飽和時系統如何行為?
這種重新定義對行銷活動的設計產生了四個具體效果。
-
通過/失敗變得明確: 一個沒有 SLOs 的負載測試可能報告說 p95 慢延遲 為 280 毫秒,CPU 達到 78%,但它沒有回答系統是否準備好釋放。像 k6、Gatling 和 Azure Load Testing 這樣的工具都支援在測試執行中直接編碼與用戶相關的閾值,產生一個真正的 通過/失敗信號,而不是一個後來某人必須解釋的儀表板。**
2. 負載形狀變得更加真實。** Google Cloud 明確建議開迴路載荷模式 由於此原因:生產客戶不像閉迴路發電機那樣自我限制。開迴路測試無論回應時間如何都會以穩定速率發送請求,這更模擬了真實流量。一個在人工友善載荷下通過的測試,在生產流量到來時仍可能災難性地失敗。**
3. 超載行為變成一種首要目標。** 驅動測試的 SLO 不僅僅問「我們的容量是什麼?」它問 「當我們超過它時會發生什麼?」 系統能否乾淨地釋放負載?它能否無法連鎖失敗地恢復?這些是發布日和需求尖峰期間至關重要的問題 — 而這些問題,「實驗室中的峰值 RPS」基準測試從未回答過。**
4. 短期測試連接到長期預算。** 一個生產 SLO 是在數天或數週內進行測量;一個負載測試則持續數分鐘或數小時。橋樑是燒率:你不需要重現整個月來表明當前錯誤率會在不可接受的快速內耗盡你的月度預算。這個計算將單次測試執行轉變為發布信號。
技術上的優勢:工程師應該知道的五個好處
真實的目標設定
SLOs 防止團隊為錯誤的數字進行優化。僅限實驗室的峰值吞吐量數據在內部令人滿意但在商業上無關緊要。SLO 將注意力集中在客戶實際使用的旅程的尾部延遲和成功率上.
更好的優先排序
Google 的錯誤預算政策明確使用預算消耗來將努力從功能轉向可靠性。當一個負載測試顯示您的結帳服務正在以三倍的持續速率消耗預算時,那是一個數據驅動的論點,支持投資於緩存或查詢優化,而不是一個意見問題。
更強的根因分析
當延遲 SLO 在測試期間失敗時,調查便有了起點:是哪個資源、依賴項或程式碼路徑首先飽和?將負載測試輸出與 跟蹤、日誌和伺服器端指標 相關聯,縮短了從「出現問題」到「找出原因」之間的時間。
防止平均值的盲目性
Google 的「Tail at Scale」研究顯示,為何大型系統會隨著規模和利用率增加而被延遲尾部所主導。The Home Depot 的 SLO 程序明確選擇了 百分位延遲 而非算術平均值,正是因為這個原因。如果你的發布門檻使用平均值,而你的用戶感受到的是 p99,那麼你低估了風險。
自動化和可重複性
SLOs,基於代碼斷言 在 Gatling 中讓性能測試適用於 CI/CD,就像單元測試一樣。例如,LoginRadius 從一種未整合到其流程中的 JMeter 方法轉移開,並報告延遲從 500 ms 降低到 250 ms,同時生產問題減少了 80%+。
商業案例:領導者應擁有的五個優勢
客戶體驗保護
SLOs 正式化「可接受」的定義,基於客戶的感受,而非易於度量的標準。每個針對SLO的負載測試都是對壓力下該體驗的未來承諾。
SLA風險降低
若一項服務在預期的峰值條件下無法達到其內部 SLO,那麼它在生產環境中違反其公共 SLA 的風險已經是現實的 — 與54%的重大停機事件,成本超過$100,000. 對內部 SLO 函數進行負載測試,作為商業暴露的預警系統 — 在其變成法律對話之前。
基礎設施適當規模化(Infrastructure right-sizing)
Canal+'s gains 包括了改進機器規模,不是過度配置「以防萬一」,而是配置到 SLO 边界。Google 的尾延遲研究指出,容忍尾延遲的技術可以允許更高的利用率而不會延長尾延遲,意味著 SLO 帶動的測試往往會暴露出天真容量規劃所遺留的空間。
以牙還牙釋放發布信心
霍顿米夫林哈考特 現在在發布前會一起運行其全部50次負載模擬,包括在高峰期前四到五倍正常流量下的活動。他們報告說,由於這個原因,生產中的性能問題更少了。這就是當它由數據而不是樂觀主義支持時,發布信心看起來的樣子.
保留速度,而不是減少速度
這是最重要的反直覺點,對於CTO層級的對話來說。Google的錯誤預算指導非常明確:耗盡預算可能會暫時放慢發布節奏,但目的是為了恢復安全的發布速度,而不是懲罰團隊。DORA的研究 一再證明,對大多數組織而言,速度與穩定性並非結構性的妥協。基於服務水平協議的負載測試並非反對交付;它是讓交付在規模上持續可行的關鍵。
擴展它:組織的維度
The Home Depot 的 SLO 程序中最重要的教訓並非技術性。在採用一個常見的 SLO 框架——涵蓋容量、可用性、延遲、錯誤和工單——之前,他們的監控是碎片化的,根本原因難以確定,而且團隊浪費了「無數小時」從用戶面對的症狀反推。
在實施具備培訓、自動化和執行報告的框架後,他們在一年內將報告 SLO 的服務規模從大約 50 個擴展到 800 個。每月約有 50 個新服務完成上線。他們還將 SLO 整合到破壞性測試中,自動記錄混亂實驗對服務指標的影響。
這不是一個工具故事。這是一個 運營模式故事. SLOs 讓工程、SRE、產品和領導力擁有一種共同的語言 — 而且這種語言讓可靠性變得可見、可討論,並可在規模上進行管理。
Evernote 的經驗也加強了跨團隊的效應。與 Google 的 CRE 團隊合作,他們採用了錯誤預算方法,九個月內就已經達到他們 SLO 實踐的第三個版本。每月 SLO 审查取代了臨時停機對話,Evernote 和 Google 都有一種共同、數據驅動的方法來討論服務品質。SLO 同時改進了供應商管理和內部優先級排序。
要從何開始:一個實用的路線圖
最值得信賴的開始點是範圍狹窄且高度相關:選擇兩到三個關鍵用戶旅程,為它們定義 SLIs,設定比 SLAs 更嚴格的內部 SLOs,並將其編碼為測試閾值。
接著將這些閾值連接到運行時遙測,並附加消耗率警報和發布門檻政策。
五個階段效能測試成熟度 模型從文獻中一致地浮現出來:
- 定義:識別關鍵用戶旅程和現有遙測數據。草擬SLIs、內部SLOs和SLA緩衝策略。
- 儀表化:將百分位直方圖、錯誤計數器和飽和指標添加到您的服務中。
- 自動化:在負載測試和CI/CD流程中編碼SLO閾值。連接追蹤、日誌和伺服器端指標.
- 操作:執行定期的SLO審查。添加快速燃燒和緩慢燃燒警報。使用SLO進行金絲雀發布和峰值準備演練.
- 擴展:推廣至更多服務和團隊。同時建立執行長儀表板與服務擁有者儀表板。
最常見的陷阱值得明確命名:設定100% SLO目標(這會完全消除錯誤預算)、使用平均值作為通過標準(這會隱藏尾部失敗)、抄襲另一家公司的閾值(這會產生不符合您架構或用戶期望的治理),以及將SLOs視為沒有後果的儀表板(這無法改變工程優先級排序)。
廣泛的策略行動呼籲
對任何首席技術官來說,診斷問題很簡單:如果你的負載測試程序沒有與服務水平目標達成、錯誤預算消耗和發布決策掛鉤,它實際上在推動什麼決策?
Canal+ 在重大廣播前回答了那個問題,並在沒有單一事件發生的情况下為數百萬觀眾服務。The Home Depot 回答了它,並在 800 個系統上擴展了可靠的服務交付。LoginRadius 回答了它,並將其生產延遲減半。
要達成這點的技術已經成熟、有詳細的文件記錄,且大都是開源技術。將測試結果與發布決策和基礎設施投資掛鉤的組織意願才是更難的部分,因為五分之四的嚴重停機都歸因於可預防的流程失敗,而不是缺少技術。
但這正是性能工程所區別開來的地方 透過績效工程產生活動,從而產生治理價值.
SLOs 不會讓負載測試更複雜。它們會讓負載測試更實用。










