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

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

下面这张图是首次压力测试重现问题时的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,究竟什么办法是有效的,需要经过明天访问高峰期的验证。

。。。

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

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

转载于:https://www.cnblogs.com/cmt/archive/2013/05/22/3093337.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/474365.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

科润酒吧点单系统服务器配置,那些牛逼的酒吧都用什么管理系统?

原标题:那些牛逼的酒吧都用什么管理系统?关于酒吧你是熟悉还是陌生?对酒吧的管理系统?你接触的都有哪些?今天分享一个超大型酒吧的系统解决方案。宁波最大酒吧S86正式营业,视易娱加管理系统助力场所运营&am…

LeetCode 第 32 场双周赛(983/2957,前33.2%)

文章目录1. 比赛结果2. 题目1. LeetCode 5468. 第 k 个缺失的正整数 easy2. LeetCode 5469. K 次操作转变字符串 medium3. LeetCode 5470. 平衡括号字符串的最少插入次数 medium4. LeetCode 5485. 找出最长的超赞子字符串 hard1. 比赛结果 两题选手报道,继续加油&a…

python中的类属性和实例属性

类属性和实例属性,一般我们接触到的就是实例属性(对象属性),顾名思义, # 实例属性是对象持有的,不是共享的属性 # 实例属性只有对象能够访问 类属性就是类对象所拥有的属性,它被所有类对象的实…

图片网站用什么服务器好,网站图片与框架放在不同服务器有哪些优缺点

如今很多企业线上发展迅速,对网站的要求也越来越高,因此出现分离式网站架构。怎样理解分离式网站架构呢?理解最简单的一种,即将图片与网站架构分开存放。的确,现在很多企业都采取这样的操作模式,也有可能成…

LeetCode 第 201 场周赛(304/5614,前5.42%)

文章目录1. 比赛结果2. 题目1. LeetCode 5483. 整理字符串 easy2. LeetCode 5484. 找出第 N 个二进制字符串中的第 K 位 medium3. LeetCode 5471. 和为目标值的最大数目不重叠非空子数组数目 medium4. LeetCode 5486. 切棍子的最小成本 hard1. 比赛结果 做出来3题,…

出现一次的数字

看了何海涛的日志 他分别解决了一个 两个 三个 出现一次的数字的思路 给人的感觉有一生二 二生三 三生万物的思维 现把自己的感悟写下来 一个 思路很简单 所有数字异或的结果 两个 关键是区别 所有的数字异或的结果同时也是两个出现一次数字异或的结果 记为XORresult<>0 …

LeetCode 723. 粉碎糖果(模拟)

文章目录1. 题目2. 解题1. 题目 这个问题是实现一个简单的消除算法。 给定一个二维整数数组 board 代表糖果所在的方格&#xff0c;不同的正整数 board[i][j] 代表不同种类的糖果&#xff0c;如果 board[i][j] 0 代表 (i, j) 这个位置是空的。 给定的方格是玩家移动后的游戏…

css3案例分析,CSS3动画/动画库以及案例分析(上)

在这html5遍天下的年代&#xff0c;越来越多的网页也用到了css3的动画效果&#xff0c;这让原本我们静态的页面有了更多的活力。最近也一直在做这方面的页面&#xff0c;有些小小的心得&#xff0c;和诸位分享下。CSS3的动画绝对是很赞的&#xff0c;不仅支持PC还支持移动端&am…

LeetCode 418. 屏幕可显示句子的数量(DP)*

文章目录1. 题目2. 解题1. 题目 给你一个 rows x cols 的屏幕和一个用 非空 的单词列表组成的句子&#xff0c;请你计算出给定句子可以在屏幕上完整显示的次数。 注意&#xff1a; 一个单词不能拆分成两行。 单词在句子中的顺序必须保持不变。 在一行中 的两个连续单词必须用…

LeetCode 568. 最大休假天数(DP)

文章目录1. 题目2. 解题1. 题目 力扣想让一个最优秀的员工在 N 个城市间旅行来收集算法问题。 但只工作不玩耍&#xff0c;聪明的孩子也会变傻&#xff0c;所以您可以在某些特定的城市和星期休假。 您的工作就是安排旅行使得最大化你可以休假的天数&#xff0c;但是您需要遵守…

魔兽世界转服务器显示完成,魔兽世界怀旧服:TAQ变简单了,为什么还是出现了AFK大潮?...

魔兽世界怀旧服在开服一年多以后&#xff0c;即将在2020年12月3日&#xff0c;迎来经典60年代的收官副本-第六阶段纳克萨玛斯大墓地(NAXX)。在差不多的时间段内&#xff0c;魔兽世界正式服也将上线全新的9.0版本-暗影国度。囧王者估计&#xff0c;在即将到来的12月份里面&#…

LeetCode 317. 离建筑物最近的距离(逆向BFS)*

文章目录1. 题目2. 解题2.1 正常思维BFS2.2 逆向思考BFS1. 题目 你是个房地产开发商&#xff0c;想要选择一片空地 建一栋大楼。 你想把这栋大楼够造在一个距离周边设施都比较方便的地方&#xff0c;通过调研&#xff0c;你希望从它出发能在 最短的距离和 内抵达周边全部的建筑…

LeetCode 431. 将 N 叉树编码为二叉树(递归/层序)

文章目录1. 题目2. 解题2.1 递归2.2 BFS1. 题目 设计一个算法&#xff0c;可以将 N 叉树编码为二叉树&#xff0c;并能将该二叉树解码为原 N 叉树。 一个 N 叉树是指每个节点都有不超过 N 个孩子节点的有根树。 类似地&#xff0c;一个二叉树是指每个节点都有不超过 2 个孩子节…

LeetCode 774. 最小化去加油站的最大距离(极小极大化 二分查找)

文章目录1. 题目2. 解题1. 题目 假设我们在一条水平数轴上&#xff0c;列表 stations 来表示各个加油站的位置&#xff0c;加油站分别在 stations[0], stations[1], ..., stations[N-1] 的位置上&#xff0c;其中 N stations.length。 现在我们希望增加 K 个新的加油站&…

LeetCode 644. 最大平均子段和 II(二分查找)*

文章目录1. 题目2. 解题2.1 暴力超时2.2 二分查找1. 题目 给定一个包含 n 个整数的数组&#xff0c;找到最大平均值的连续子序列&#xff0c;且长度大于等于 k。并输出这个最大平均值。 样例 1: 输入: [1,12,-5,-6,50,3], k 4 输出: 12.75 解释: 当长度为 5 的时候&#xff…

LeetCode 527. 单词缩写(Trie树)

文章目录1. 题目2. 解题1. 题目 给定一个由n个不重复非空字符串组成的数组&#xff0c;你需要按照以下规则为每个单词生成最小的缩写。 初始缩写由起始字母省略字母的数量结尾字母组成。若存在冲突&#xff0c;亦即多于一个单词有同样的缩写&#xff0c;则使用更长的前缀代替…

LeetCode 1199. 建造街区的最短时间(优先队列贪心)

文章目录1. 题目2. 解题1. 题目 你是个城市规划工作者&#xff0c;手里负责管辖一系列的街区。在这个街区列表中 blocks[i] t 意味着第 i 个街区需要 t 个单位的时间来建造。 由于一个街区只能由一个工人来完成建造。 所以&#xff0c;一个工人要么需要再召唤一个工人&…

LeetCode 1088. 易混淆数 II(回溯/BFS)

文章目录1. 题目2. 解题2.1 回溯2.2 BFS1. 题目 本题我们会将数字旋转 180 来生成一个新的数字。 比如 0、1、6、8、9 旋转 180 以后&#xff0c;我们得到的新数字分别为 0、1、9、8、6。 2、3、4、5、7 旋转 180 后&#xff0c;是 无法 得到任何数字的。 易混淆数&#xf…

LeetCode 759. 员工空闲时间(排序)

文章目录1. 题目2. 解题1. 题目 给定员工的 schedule 列表&#xff0c;表示每个员工的工作时间。 每个员工都有一个非重叠的时间段 Intervals 列表&#xff0c;这些时间段已经排好序。 返回表示 所有 员工的 共同&#xff0c;正数长度的空闲时间 的有限时间段的列表&#xf…