开发者社区> 问答> 正文

云计算之路-阿里云上:拔云见日的那一刻,热泪盈眶

当用路过秋天的压力测试工具重现问题的那一刻,热泪盈眶!这段时间所承受的一切一涌而出。。。

下面这张图是首次压力测试重现问题时的Windows性能监视器截图,我们对这样的图太熟悉了,当它一出现,就知道问题重现了。红色的直线表示的是100%的CPU占用率,蓝色如栅栏的线条是ASP.NET请求执行时间(Request Execution Time)。这时如果用浏览器访问站点,会奇慢无比。



我们是这样进行压力测试的,将一台Web服务器从阿里云SLB(负载均衡)中摘下来,其他运行环境(Web程序、Memcached、NoSQL、RDS)没有任何变化,然后用压力测试直接向这台Web服务发出请求。压力测试工具造成这台云服务器的TCPv4->Connections Established(性能监视器的一个监测指标)超过2000,问题立即重现。

TCPv4->Connections Established这个指标在我们之前的博文中从没提过,而它就是今天取得突破的关键所在。简单来说,它表示的是这台服务器的当前TCP连接负载。今天下午我们发现,正常期间Connections Established的数值都在1000以内,而故障期间这个值都会超过1000。在出现故障的时候,只要我们以某种方式将Connections Established的数值降到1000以下,故障就会消失,比如重启IIS、禁用网卡,甚至重启Memached/NoSQL服务器(它们与Web服务器之间进行频繁的TCP连接)也能解决问题。

我们的压力测试就是针对TCPv4->Connections Established,只要压到1000以上,问题就会重现;降到1000以下,问题就会消失。( 另一张压测截图

为了进一步验证是这台云服务器本身的问题,与周边环境无关。在压测时这台云服务器CPU 100%、访问奇慢无比期间,我们访问处于同样环境的其他云服务器,速度飞快。

根据压测情况,我们的猜测是:在某种特定的条件下,当云服务器(Xen虚拟机)的并发TCP连接数超过一定的数值(目前我们的估计是1000~2000),云服务器的CPU占用率会飙升或大幅波动,某些处理能力会急剧下降,比如ASP.NET的请求处理时间由“几十毫秒”狂飚至“几十秒”。(仅是我们单方面的猜测,并不代表阿里云云服务器的真实情况)

那我们是如何找到TCPv4->Connections Established的呢?

这要从今天凌晨4点多路过秋天对我们的站点进行短暂的压测说起。压测之后,我们发现不仅4台8核的Web服务器的CPU没撑住,竟然连8核的Memcached服务器的CPU也没撑住。这说明问题与应用程序没有关系,如果是应用程序的原因,那不应该出现Memcached服务器CPU撑不住的情况。应用程序与Memcached软件(Couchbase)都会引起这个问题的可能性估计一万看才会遇到一次。所以从这个压测,我们进一步排除ASP.NET应用程序引起这个问题的可能性。

今天上午故障期间,我们特地禁用Memcached/NoSQL进行观察,问题仍旧。进一步排除了Memcached/NoSQL引起这个问题的可能性。问题与虚拟机的CPU占用高有关,这是板上钉钉的事实,但是究竟什么触发了CPU占用高比这个事实更重要。CPU不会喝酒喝多了,不会发羊癫疯。。。肯定是某个因素造成的。

IIS并发连接数是一个嫌疑对象,但很难确定是因为CPU占用高造成IIS并发连接数上升,还是因为IIS并发连接数上升造成CPU占用高。在下午的故障期间,我们发现重启Memcached/NoSQL竟然也能解决问题,说明问题即使与IIS并发连接数有关,但也不是仅与IIS并发连接数有关。

后来,我们在网上找到了一些说Xen虚拟机TCP处理能力可能存在问题的线索(这只是启发我们思考问题的线索,不代表现在的Xen虚拟机还存在这个问题)。于是,我们把虚拟机的TCP处理能力作为一个怀疑对象,并在Windows性能监视器中找到一个监测指标——TCPv4->Connections Established,在下午故障期间特地监测了这个指标,才发现前面所说的Connections Established在1000以下一切正常,1000以上就出故障。然后在压力测试中专门针对这项指标进行测试,才重现了问题。

那如何解决这个问题?

从我们自身角度,我们会想办法尽量减少单台云服务器的TCPv4->Connections Established,究竟什么办法是有效的,需要经过明天访问高峰期的验证。

。。。

热泪盈眶的不仅仅是因为在煎熬中看到了曙光,更是因为给大家带来这么多这么大的麻烦,总算有了一点交代。

彻底解决这个问题后,我们会以更好的产品、更好的服务去弥补!

博文原文: http://www.cnblogs.com/cmt/archive/2013/05/22/3093337.html

展开
收起
cnblogs 2013-05-22 22:07:30 14428 0
12 条回答
写回答
取消 提交回答
  • Re云计算之路阿里云上:拔云见日的那一刻,热泪盈眶
    不要哭了
    2013-05-23 13:25:02
    赞同 展开评论 打赏
  • 回7楼xuanmin的帖子
    博客园都算小网站。。。。。。。。。。。。。。。。。。。。。。。。
    2013-05-23 12:43:47
    赞同 展开评论 打赏
  • 出问题不怕,重要的是最终能解决问题~
    2013-05-23 10:32:15
    赞同 展开评论 打赏
  • xen类型虚拟机的问题???
    2013-05-23 10:26:32
    赞同 展开评论 打赏
  • 不知道是不是这个影响了网站的正常访问,如果是那就最好。
    2013-05-23 09:11:15
    赞同 展开评论 打赏
  • 回7楼xuanmin的帖子
    12306是多么财大气粗啊,随随便便一单硬件采购就3个亿,不差钱就不用阿里云了,呵呵
    2013-05-23 08:59:49
    赞同 展开评论 打赏
  • 一个小网站搞成这样,你让12306情何以堪
    2013-05-23 08:40:19
    赞同 展开评论 打赏
  • Re云计算之路阿里云上:拔云见日的那一刻,热泪盈眶
    不知所云。。。
    2013-05-23 02:41:30
    赞同 展开评论 打赏
  • 2013-05-22 23:27:53
    赞同 展开评论 打赏
  • 希望可以把减少TCPv4->Connections Established的方法透露一下。

    -------------------------

    回 2楼(j1zero) 的帖子
    享受快速布署是要付出代价的,没有十全十美的事。
    2013-05-22 23:12:17
    赞同 展开评论 打赏
  • Re云计算之路阿里云上:拔云见日的那一刻,热泪盈眶
    话说你们以前没迁到阿里云会出现这么多问题吗?咋觉得到了阿里云就问题百出了呢
    2013-05-22 22:10:37
    赞同 展开评论 打赏
  • 找到原因和解决了就好
    2013-05-22 22:10:08
    赞同 展开评论 打赏
滑动查看更多
问答排行榜
最热
最新

相关电子书

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