在CDN,我們不斷開發創新的新方法,幫助我們的基礎設施在負載突然增加時保持高性能和彈性。 這通常涉及探索我們使用的現有技術的優化。 此外,驗證新方法是這一過程的一個重要部分,因為它可以保證新的變化在生產環境中產生預期的積極影響。
當內容變得流行時,我們會將其復制到數據中心/入網點(POP)的多個伺服器上。 這使我們能夠更好地平衡負載並處理此類浪湧,從而降低伺服器超載的風險。 這種‘機制稱爲‘熱文件’,常用內容稱爲‘‘熱文件’。 我們最近開發了一種自適應負載平衡(ALB)優化,通過使傳統熱歸檔功能更強地抵禦流量激增,從而改進了傳統熱歸檔功能。 特別是,它通過測量伺服器負載而不是依賴靜態閾值來動態確定所需的復制量。 這樣可以更均勻地將負載分配到POP中的所有伺服器,從而增加了任何POP以及CDN的整體請求處理能力。 上一篇關於評估適應性負載平衡系統的文章詳細介紹了此優化的機制。
在本帖子中,我們驗證了這種優化在生產中的積極影響。 我們首先定義用於衡量影響的指標。 接下來,我們通過示例展示優化對每個指標的影響。 最後,我們展示了優化對部署了該優化的所有POP的總體影響。 總而言之,我們發現,伺服器在超過預定義閾值的總負載時間至少減少了70%,而幾乎所有POP都看到了這一指標的改進。 此優化現已在全球範圍內對所有客戶流量啟用。
定義度量
為了評估這一新優化在生產中的影響,我們定義並監控了三個指標:
- 伺服器偏差:這是伺服器負載與中位數負載之間的比率,在Pop中,所有伺服器的負載。
- 熱文件數:這是熱文件機制在任何給定時間復制的文件數。 自適應負載平衡預期會增加熱文件的數量,因為熱填充是其負載分布的基本機制。
- 伺服器超過目標偏移的時間:此度量會評估「自適應負載平衡」的有效性。 當我們將目標偏差閾值設定為特定值時,我們希望看到大多數伺服器的偏差通常小於該值。
優化對受監控指標的影響
達到目標偏差
下圖顯示了彈出式伺服器負載分布的兩個快照。 在左側(不帶自適應負載平衡),我們看到多臺伺服器的負載超過了偏移目標(紅色框),並且它們的負載超過POP中位數的1.8倍。 在右側(使用自適應負載平衡),我們可以看到伺服器之間的平衡性更大,沒有伺服器顯示的負載高於中位數的1.8倍。
使用“適應性負載平衡”更改負載分配。 我們注意到過載的伺服器數量有所減少。
熱文件的數量和負載分布
接下來,我們檢查了熱文件的數量如何受到影響,以及每臺伺服器上負載的相應變化。 下圖顯示在彈出窗口中啟用ALB時熱文件的數量增加。 這種情況是預料到的,因為該機制有選擇地增加了從負載較高的伺服器卸載文件的可能性。
從根本上說,熱文件和ALB通過增加為特定文件提供服務的伺服器數量來減少單個伺服器的負載。 這會增加每臺伺服器上的存儲負載。 但是,在任何給定時間選擇復制的其他文件與PoP提供的文件總數相比相對較低,因為它們只是從需要卸載的離群伺服器中選擇的。 在大多數情況下,與總磁盤空間相比,使用的額外高速緩存空間非常小。 因此,這種權衡是值得的,但必須確定和注意。 在實施過程中,我們包括了健全性檢查,以驗證高速緩存的使用情況是否受到此優化的負面影響。
熱文件的數量。 當“自適應負載平衡”打開時(紅色標記),該數目會增加,因為會嘗試卸載離群伺服器。
第二個圖顯示了在該POP的相同時間段內每臺伺服器傳輸的流量。 我們觀察到,啓用“自適應負載平衡”(紅線虛線)時,服務器之間的負載變得更加平衡。 這使伺服器對傳入流量更具彈性,並降低了伺服器過載的風險。
負載分配(Mbps)在04年05月02日至05月30日之間。 打開“適應性負載平衡”時,分佈將變得更加平穩,更多的服務器提供更接近中間值的流量。 這有助於降低伺服器因新流量而過載的風險。
超過目標偏差的時間
在這裏,我們考慮了一個實驗,在實驗中,PoP被設置爲保持目標偏斜1.6x。 在下圖中,橙色線顯示了實驗期間的“服務器偏差”分佈情況。 將此分佈與藍線(即基線週期的相應分佈(無自適應負載平衡)相比較,我們發現負載向中位數轉移。 值得注意的是,分配的”尾部”也顯著減少,99百分位數從2.12下降到1.52,低於目標偏差。
自適應負載平衡降低最大伺服器負載,並使伺服器負載接近中間值。
減少分佈中的“尾端”是優化的主要目標,因爲該尾端中的服務器(即具有最高負載的服務器)在新的流量峯值中面臨過載的更大風險。 為了進一步量化這一減少量,我們還測量了在使用/不使用自適應負載平衡的實驗期間,任何伺服器通過目標傳輸流量的分鐘數:
自適應負載平衡可減少伺服器在目標閾值上傳遞負載所花費的時間。
在本例中,我們觀察到,在這次激增中,超過目標偏斜的時間減少了88 %。 這是一個很好的指標,表明“適應性負載平衡”可以保持所需值周圍的負載分布的偏差。
全球部署的結果
在對少數幾個選定的POP進行優化測試並在測量指標上看到良好結果後,我們將系統部署到每個POP,以量化隨時間推移的匯總影響。 與之前一樣,我們測量了POP中提供流量所花費的集合分鐘數(在POP中設定為1.8x中伺服器負載的中間值)。 下圖顯示了伺服器在75個POP的閾值上花費的分鐘數的兩個分布。 藍線對應4天的基準數據,橙線對應4天的自適應負載平衡數據。 分佈向左的整體偏移表明,運行自適應負載平衡的POP中的服務器在閾值上花費的時間較少。
對於所有POP,伺服器在4天內交付高於指定閾值(1.8 *中位數)的負載所花費的總分鐘數。 使用自適應負載平衡時,分佈會向左移動,表明該機制將服務器負載保持在目標偏差與中位數之間的較長時間。
為了進一步了解對單個持久性有機汙染物的影響,我們還記錄了每個持久性有機汙染物的此指標的百分比變化。 結果顯示,一半的POP在伺服器超過目標偏移的總時間減少了70至95%,幾乎所有POP都減少了超過閾值的時間。
在不斷提高CDN的性能和可靠性的努力中,我們最近部署並評估了一種優化方法,即在Pop中平衡流量負載。 此優化可識別超過指定閾值的伺服器與其他Pop的伺服器相比,並卸載這些伺服器,特別是在出現新流量高峰時降低性能影響的風險。 生產結果顯示了與早期仿真結果一致的顯著改進,顯示了優化在將伺服器負載分布保持在所需的偏移範圍內的效率。 因此,我們現在已針對所有客戶流量在全球範圍內啟用了此優化。
特別感謝Angela Chen在實施和部署這一機制方面所做的努力。 另外,感謝Scott Yeager,Derek Shiell,Marcel Flores,Anant Shah和Reed Morrison幫助進行一般性討論,感謝Colin Rasor,Richard Rymer和Olexandr Rybak幫助進行數據收集和可視化。