雲計算之路-入阿里雲后:解決images.cnblogs.com響應速度慢的詭異問題


昨天,是我們遷入阿里雲后經受高訪問量考驗的第一天,除圖片站點(images.cnblogs.com)之外其他站點的訪問速度表現都很不錯。

images.cnblogs.com 是我們之前存放上傳圖片的主要站點,現在用的是 images.cnitblog.com 。images.cnblogs.com 部署在一台阿里雲雲服務器上,images.cnitblog.com 用的是又拍雲(有CDN加速)。images.cnblogs.com 沒有使用又拍雲是因為讓人糾結的Url大小寫的問題,詳見之前的博文雲計算之路:雲存儲的糾結

昨天在上班時間的訪問高峰期,images.cnblogs.com圖片加載速度變得很慢,嚴重時變得奇慢無比。究竟慢到什么程度,請看下面的截圖(這可是304 Not Modified的響應)。很多200響應會超時。

剛開始發現問題時,我們以為是帶寬不夠,后來把帶寬加到綽綽有余,問題依舊。當時還以為是阿里雲的問題——帶寬沒加上去,聯系了客服,確認帶寬的確加上了。

確認不是帶寬的原因后,我們又從磁盤IO入手——圖片站點的特點之一就是讀磁盤很頻繁。但從監測數據看,磁盤IO也在正常范圍。

對於圖片這樣的靜態文件站點,影響速度的兩個最主要的因素(帶寬與磁盤IO)都正常,CPU、內存占用也正常(靜態文件站點本來對CPU與內存的資源需求就很小),而訪問速度卻奇慢,真是一個詭異的問題。

出現問題時,IIS的同時連接在3500左右,這個連接數應該是小意思。以前用自己的服務器,不是靜態文件的站點,2萬的同時連接數都撐得住。

一直忙到下班時間,都沒解決問題。。。。

下班時間之后(訪問量降下來了),突然恢復了正常,查看了IIS同時連接數,降到了2000以下。

問題肯定與雲服務器的負載有關,負載達到一定程度(我們目前可觀察到的指標是IIS同時連接數超過2000),雲服務器就會有強烈反應(我們遇到的站點響應速度奇慢就是反應之一)。不管怎么樣,這么強烈的反應肯定與對某一個資源的需求得不到及時滿足有關,而資源無非就是CPU、內存、硬盤、網卡,前面三個資源通過監測都確認正常,網卡出問題的可能性很小,我們也不知道如何監測。每個部分都是正常的,整體卻有問題。詭異問題不是徒有虛名。

對問題的原因我們束手無策,但我們又必須要解決問題,怎么辦?

把當前問題(在某種情況下單台雲服務器撐不住2000以上的並發連接)當作一個約束條件,在這個約束之下解決真正要解決的問題——讓 image.cnblogs.com 恢復正常速度訪問。

一下子問題變得簡單了,既然單台雲服務器撐不住2000以上的並發連接,那就分而治之,將請求分在多台雲服務器上,讓單台雲服務器承受2000以下的並發邊接。這樣還會帶來一個額外的好處,將帶寬分在多台雲服務器上購買,成本更低。(再次證明了明確真正要解決的問題,問題就解決了一半)

但是這種解決方法引發了另外一個問題,如何分而治之?負載均衡當然是首選,但是阿里雲有且只有1個負載均衡器,已經用在了訪問量更大的站點上。問題又變成了——如何不用負載均衡器做負載均衡?這時需要跳出當前的視野,來到用戶發起請求的第一站——DNS服務器,通過DNS輪詢達到負載均衡的效果。在DNS服務器中為 images.cnblogs.com 添加多個IP,每次解析時隨機選取一個IP(雖然不是很均衡,但能夠解決實際問題)。

今天我們就采用了“DNS輪詢+兩台雲服務器”來驗證我們的解決思路,效果很明顯,images.cnblogs.com圖片加載速度明顯提升。為了達到更滿意的效果,我們正在增加更多的雲服務器。

明確真正要解決的問題、分而治之、跳出當前的視野,這就是我們在這次解決問題中想要分享的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM