IDC机房带宽突然暴涨原因分析及应对方法

互联网数据中心(Internet Data Center)简称IDC,就是电信部门利用已有的互联网通信线路、带宽资源,建立标准化的电信专业级机房环境,为企业、政府提供服务器托管、租用以及相关增值等方面的全方位服务。


IDC主机托管主要应用范围是网站发布、虚拟主机和电子商务等。比如网站发布,单位通过托管主机,从电信部门分配到互联网静态IP地址后,即可发布自己的www站点,将自己的产品或服务通过互联网广泛宣传;虚拟主机是单位通过托管主机,将自己主机的海量硬盘空间出租,为其他客户提供虚拟主机服务,使自己成为ICP服务提供商



【分析问题】
  1)IDC
带宽被占满的原因很多,常见的有:

  a.真实遭受DDOS攻击(遇到过几次,造成影响的不多见,其中还有黑客勒索的案例)。
  b.
内部服务器中毒,大量外发流量


  c.网站元素(如图片)被盗连,在门户页面被推广导致大量流量产生(接警3次以上)


  d.合作公司来抓数据,如:对合作单位提供了API数据接口(有合作的公司的朋友了解这个)


e.购买了CDN业务,CDN猛抓源站


  f.其他原因还有一些,不普遍就不提了。



  2)CDN带宽异常,源站没异常。

  这类问题基本都是缓存在CDN的数据被频繁访问引起的。解决方法见结尾案例。



  3) CDN带宽异常,源站也异常。

         可能原因如公司做推广,大量数据访问,热点数据cache里不全。或CDN问题导致数据回源(有关CDN回源率问题及提升回源率经验,以后再和大家分享)。影响就是带宽高,后端静态服务器及图片及存储压力大


解决问题】
   
分析了问题的可能原因,就好比较排查了。

     a.真实遭受DDOS攻击


b.内部服务器中毒,大量外发流量。

           这个问题的解决比较简单,可能有的朋友说,看看服务器流量,哪个机器带宽高处理下就好了。其实不然,实际解决比这复杂得多,带宽打满,所有监控都是看不到的。
        
比较好的思路,是联系机房确定机房自身无问题后(机房一般没法帮我们的),请机房断开连接外部IP服务器的网线,如负载均衡器,仅保留VPN SERVER,然后断掉内部服务器出网光关的线路,切断外发流量源头。
         
接下来查看监控流量服务,判断外发流量的服务器,然后进行处理。
         
其实,这个问题的发生及快速定位和很多公司的运维规范、制度关系很大。

          比如有的公司开发直接FTP连接随时发布代码,或者由开发人员负责定时多次上线。而运维人员又不知晓,结果导致问题发生定位时间长,这点建议各公司的老大多思考下。
         
如果把网站机房比喻为一座房子,那首先要堵住后门(内部),其次是监控好前门(做好安全,留个小窗户给外面人看,即80端口服务,同时安排站岗值班的)。
         
网站的无休止的随时随意发布代码,对网站的稳定影响是至关重要的。对运维人员对故障的定位快慢也很关键。


c.网站元素(如图片)被盗连
          这个属于网站的基本优化了,apache,lighttpd,nginx都有防盗链的方案,必须要搞。说到这也提个案例,老男孩的一个学生,到了企业工作,发现人家网站没有防盗链,结果上来没有周知老大,直接做防盗链了,然后美滋滋的当时还给我留言,说给公司搞防盗链了,很有成就,结果导致公司对外合作的业务,都是小叉子了,幸亏发现的及时没出大问题。
  d。
合作公司来抓数据,如:对合作单位提供了API数据接口或购买了CDN业务。

            最常见的就是购买CDN服务,如:CDN新建一个节点(可能数十机器),直接来我们IDC原战来抓数据(有的做好点的夜里来抓)。把原站抓的流量暴涨,严重的导致服务宕机。几家CDN公司,都有过这样的问题。

          当然和电信,联通,GOOGLE,BAIDU,词霸等公司的合作,也会有流量暴高的情况,这里面包括了为合作的站搜索引擎爬虫爬数据的问题。有时虽然带宽流量不高,但是服务器或数据库撑不住了,搜索引擎专门喜欢爬我们的站内搜索,DISCUZCMS等早期的开源程序的搜索都是全站like %%方式去数据库搜索的,几个爬虫过来,直接就挂掉了,当然这不是本文要讨论的,解决方案以后再聊。


范例7:分析图片服务日志,把日志(每个图片访问次数*图片大小的总和)排行,取top10,也就是计算每个url的总访问大小

说明:范例7的生产环境应用:这个功能可以用于IDCCDN网站流量带宽很高,然后通过分析服务器日志哪些元素占用流量过大,进而进行优化裁剪该图片(见老男孩发布的《淘宝的双十一超大流量应对文章点评》),压缩js等措施。

本题需要输出三个指标: 【访问次数】    【访问次数*单个文件大小】   【文件名(可以带URL)】

解答:

测试数据

59.33.26.105 - - [08/Dec/2010:15:43:56 +0800] "GET /static/images/photos/2.jpg HTTP/1.1" 200 11299 "http://oldboy.blog.51cto.com/static/web/column/17/index.shtml?courseId=43" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)"

59.33.26.105 - - [08/Dec/2010:15:43:56 +0800] "GET /static/images/photos/2.jpg HTTP/1.1" 200 11299"http://oldboy.blog.51cto.com/static/web/column/17/index.shtml?courseId=43" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)"

59.33.26.105 - - [08/Dec/2010:15:44:02 +0800] "GET /static/flex/vedioLoading.swf HTTP/1.1" 200 3583"http://oldboy.blog.51cto.com/static/flex/AdobeVideoPlayer.swf?width=590&height=328&url=/`DYNAMIC`/2" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)"

124.115.4.18 - - [08/Dec/2010:15:44:15 +0800] "GET /?= HTTP/1.1" 200 46232 "-" "-"

124.115.4.18 - - [08/Dec/2010:15:44:25 +0800] "GET /static/js/web_js.js HTTP/1.1" 200 4460 "-" "-"

124.115.4.18 - - [08/Dec/2010:15:44:25 +0800] "GET /static/js/jquery.lazyload.js HTTP/1.1" 200 1627 "-" "-"

法一:通过两个数组来计算

因为我们要的最终结果是某个文件的访问次数和消耗的流量,所以考虑建立以文件名为索引的两个数组,一个存储访问次数,一个保存消耗的流量,这样当使用awk按行遍历文件时,对次数数组+1,同时对流量数组进行文件大小的累加,等文件扫描完成,再遍历输出两个数组既可以得到该文件的反问次数和总的流量消耗。

[root@locatest scripts]# awk '{array_num[$7]++;array_size[$7]+=$10}END{for(x in array_num){print array_size[x],array_num[x],x}}' access_2010-12-8.log |sort -rn -k1|head -10 >1.log

法二:

[root@locatest scripts]# awk '{print $7"\t" $10}' access_2010-12-8.log|awk '{S[$1]+=$2;S1[$1]+=1}END{for(i in S) print S[i],S1[i],i}'|sort -rn|head -10 >2.log

[root@locatest scripts]# diff 1.log 2.log

[root@locatest scripts]# cat 1.log

57254 1 /static/js/jquery-jquery-1.3.2.min.js

46232 1 /?=

44286 1 //back/upload/course/2010-10-25-23-48-59-048-18.jpg

33897 3 /static/images/photos/2.jpg

11809 1 /back/upload/teacher/2010-08-30-13-57-43-06210.jpg

10850 1 /back/upload/teacher/2010-08-06-11-39-59-0469.jpg

6417 1 /static/js/addToCart.js

4460 1 /static/js/web_js.js

3583 2 /static/flex/vedioLoading.swf

2686 1 /static/js/default.js


      以上内容整理自老男孩老师博客,感谢老师精心付出。

本文转自写个博客骗钱博客51CTO博客,原文链接http://blog.51cto.com/dadonggg/1947674如需转载请自行联系原作者


菜鸟东哥

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值