云计算之路-阿里云上:一场暴风雨的袭击
2013年6月13日晚10點左右,一場暴風雨(突發的非正常流量)突襲園子,造成滿園盡是500。
這次風暴給大家帶來了麻煩,懇請大家的諒解!在這篇博文中,我們向大家匯報一下暴風雨的襲擊過程。
當發現問題后,我們立即登錄上云服務器發現巨量的請求撲向云服務器,將云服務器的CPU撐爆,奇怪的是這些請求訪問的竟然不是我們的域名。
原來是有人將域名解析到了我們的IP,針對這個域名的大量請求全部轉向了我們的Web服務器,暴風雨就是這么來的。
雖然我們在程序中會對這種情況(請求的域名不匹配)直接返回404錯誤,但這次請求量太大,云服務器的CPU撐不住,從而引發了500錯誤。
*思考:
- 如果阿里云能提供云服務器的CPU占用報警功能,就能更及時地發現這種異常情況。
- 如果阿里云能實現真正的計算能力彈性擴展,就能在CPU跑滿的情況下自動增加CPU,減少突增請求對網站正常訪問的影響。如果按照現在的方式,發現CPU不夠用的時候再購買云服務器、配置、部署,黃花菜都涼了。
- 在非常高并發的情況下,托管代碼還是有些力不從心,證據來自——我們后來用非托管的IIS URL Rewrite Module解決了問題。
由于我們用了阿里云SLB(七層負載均衡),請求是由SLB轉發過來的,所以我們想到了讓阿里云通過SLB屏蔽針對這個域名的請求,但阿里云客服說SLB目前沒有這個功能。
為了盡快讓網站恢復正常,我們先通過IIS域名綁定的方式屏蔽異常域名的請求,讓www.cnblogs.com的訪問恢復正常。但這樣的情況下,通過cmt.cnblogs.com這樣的二級域名就不能正常訪問。
后來,我們改用IIS URL Rewrite Module屏蔽了異常域名的請求。
<rule name="BlockForeignDomain" enabled="true" stopProcessing="true"> <match url=".*" /><conditions><add input="{HTTP_HOST}" pattern="^.*?\.?cnblogs\.com$" negate="true" /><add input="{HTTP_HOST}" pattern="^\d+\.\d+\.\d+\.\d+$" negate="true" /></conditions><action type="AbortRequest" /> </rule>通過云服務器上的屏蔽策略,消除了500錯誤。但此后的訪問還時不時會出現502 Bad Gateway錯誤:
雖然在云服務器層屏蔽了異常域名的請求,但巨量的請求依然會給阿里云SLB(七層負載均衡)帶來巨大的壓力,502錯誤是SLB引起的。
后來阿里云開啟了SLB的流量清洗,但問題還是存在。
最終切換了SLB(換IP)才解決問題。
?
相關博文:滿園盡是503,記曾經的一次IIS 7性能考驗
轉載于:https://www.cnblogs.com/cmt/archive/2013/06/14/3135282.html
總結
以上是生活随笔為你收集整理的云计算之路-阿里云上:一场暴风雨的袭击的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【OpenCV】图像的通道分离
- 下一篇: 黑客与画家 第一章