有情怀,有干货,有广告,微信搜索【三太子敖丙】关注这个不一样的程序员。
本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试完整考点、资料以及我的系列文章。
最近是很难有时间输出视频和文章了,视频嘛咳咳看我上一期文章的都知道,我相机丢了只能等新相机了,至于文章是实在没时间了,主要原因呢就是双十一即将来临,作为一个电商公司的程序员我当然也比往常忙上不少。
这不一会就多了N个@,又要迭代需求,又要做自己本身的项目,还得熬夜压测。
不是电商公司的小伙伴可能都感受不到,那我就带着你们感受一下,刚好昨天我通宵进行了双十一的第三次压测,我就跟大家简单聊聊压测的时候我需要做些什么?
我先简单的介绍一下我自己的系统,还算是核心,大家可以理解为用户画像系统,用户的每个行为都会有对应的数据,比如你的支付,领券,登录,观看直播,浏览某个商品等等,你的所有行为都会被我们记录分析最后给你生成对应的特征。
基本上APP的各个个性化界面都会跟我的系统产生交互,总而言之,言而总之就是比较核心的系统,所有互联网公司都会有这样的系统,可以理解为压测还算关键的一环,所以我的任务还算小重。
压测一般都是凌晨1点以后开始,因为那个时候是用户的流量的低谷大家都去睡觉了(不排除有少数夜猫子)那个时候压测是对线上系统影响最少的时候,就算压测某些业务出了问题,影响面也是很小的,而且在现场的目的就是为了当场解决问题。
大家是不是以为我们坐在那啥事不干划划水看看手机就好了,没错你说对了,大部分时间在那划水看手机其实就够了,但是压测一开始,事情就变得不一样了,要是你压出了问题我想你一晚上可能都看不了手机了。
压测我们都是用大量的流量机,抓取平时流量,然后设置对应的量进行流量回放,以达到压测的目的,不会一上来就压满,都是从1%、10%、50%、100%、125%各压5分钟。
每次开始前压测的总PM会在群里通知大家,大家需要做的就是打开自己的系统监控查看数据是否异常,比如报错、CPU负载、接口RT(Response Time ms)等等,每次压测一个环节出了问题会等问题修复重新压测,直到通过才进行下一个环节压测,就可能存在所有链路都等你一个人解决问题,所以压力还是很大的。
压测基本上都是全链路的,也就是所有我们可能会受到流量冲击的接口,这中间如果有的系统出了问题,我们也可能进行单压,也就是对特定的系统单独压测。
你们可能好奇昨天值班,我的系统压测有没有出问题?这一晚上我又干了啥?
刚好昨天我系统的压测不顺利,我可以跟大家简单聊一下怎么发生,我又是怎么排查解决的。
晚上在压测到75%的时候,某业务端突然ko(超时)了很多接口,主要原因是因为直播端调用我系统的接口全部超时了,我第一时间打开了自己的tesla(公司自研RPC框架,大家可以理解为Dubbo)控制台查看。
我一看,确实出现了大量的超时,完了我的系统怎么会有问题呢?这是我第一时间的想法,难道三歪又乱点什么东西了?
所以我马上打开我们的接口调用平台,查看所有的调用我接口的情况,我查看了所有超时的接口,我发现了一个奇怪的现象。
我自己的接口耗时虽然超出了平时很多(平时平均Rt 1ms-50ms)内部耗时现在也不算特别高才250ms,但是整个接口调用耗时用了整整1000ms,这中间的多耗时都到哪里去了?难道服务器网络有问题?
还在思考网络问题的我又发现了一个奇怪的现象,就是所有这些超时的接口,全部打在我的一台ip为133的服务器上了,我这个系统负载均衡了8台。
这就有意思了,我机器都是复制扩容的,还能存在个体差异?
我拿到ip后就登录管理后台查看这台机器的所有指标,我发现是有点问题。
才压到75%的时候ip为133的这台台机器cpu就打到了76%,负载也到达了10附近,而其他指标正常,包括网络吞吐,磁盘IO等一切正常。
这个时候我就怀疑是流量不不均匀导致的,因为同期其他机器的cpu连20%都没到,但是我一看请求数量,又把我给难到了,请求数量是很均匀的,在均匀的请求数量下面我看了看异常数,开头那张图的总异常全部来自这一台机器。
当务之急呢是保证系统正常不影响其他链路的压测,所以解决方法很简单,我下线掉这台服务就好了,至于问题初步怀疑是云服务器的网络抖动问题,或者单机开启了其他耗时内存,至于具体的原因只能等压测结束第二天慢慢排查了。
后面的压测我的系统就比较顺利了,结束前我还眯了一小时,天亮就回家睡觉,这种第二天我们是可以不上班的。
絮叨
是不是发现还挺有趣的,我这次的问题比较简单,而且我其实没找到根源所在,但是云服务器就是偶尔会有一些机器抽风存在各种各样的问题,一般我们都下线或者开一台新服务器启动就好了,其他侧的同学遇到复杂的问题多的多了,很多需要修改代码甚至中间件的源代码,大家有兴趣我还可以后面单独写一些。
现在很多服务都做了云原生基本上都可以做到各种丝滑的操作了。
双十一期间可能还会出一些系统相关的文章,或者科普的,比如大家不好奇淘宝怎么抗住这么大流量的么?感兴趣我真的可以做一期视频,看看大家的期待值吧哈哈,后一期可能是针对怎么找项目,怎么部署开发项目的文章。
我是敖丙,你知道的越多,你不知道的越多,感谢各位人才的:点赞、收藏和评论,我们下期见!
文章持续更新,可以微信搜一搜「 三太子敖丙 」第一时间阅读,回复【资料】有我准备的一线大厂面试资料和简历模板,本文 GitHub https://github.com/JavaFamily 已经收录,有大厂面试完整考点,欢迎Star。