开发者社区> 问答> 正文

云计算之路-阿里云上:一场暴风雨的袭击

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)才解决问题。

博文原文: http://www.cnblogs.com/cmt/archive/2013/06/14/3135282.html

展开
收起
cnblogs 2013-06-14 12:42:33 11043 0
7 条回答
写回答
取消 提交回答
  • 这得多大的网站 应该是千万ip数量级的吧
    2013-06-16 15:59:43
    赞同 展开评论 打赏
  • 感谢分享,又学了一招。
    2013-06-14 17:55:12
    赞同 展开评论 打赏
  • 学习了~~
    2013-06-14 14:48:20
    赞同 展开评论 打赏
  • 这不科学!
    2013-06-14 14:34:27
    赞同 展开评论 打赏
  • 被人恶意指向了,悲催
    2013-06-14 13:04:17
    赞同 展开评论 打赏
  • Re云计算之路阿里云上:一场暴风雨的袭击
       顶起~
    2013-06-14 12:56:04
    赞同 展开评论 打赏
  • 关注了
    2013-06-14 12:55:15
    赞同 展开评论 打赏
滑动查看更多
问答排行榜
最热
最新

相关电子书

更多
云计算中的数据安全 立即下载
汇聚云计算的生态核能——云市场,云上APP Store 立即下载
天气风险管理的过去、现在与未来——基于大数据和云计算的天气风险管理 立即下载