复个盘

夜黑风高,正是复盘的良机

上次说到我深爱的客户的网络限制深深滴伤害了我,就讲一下如何诊断出来的。

背景当然是MySQL 5.6升级到MySQL 5.7导致系统整体性能下降,才引发的整个故事。

首先为什么要升级,因为MySQL 5.6的主从复制很慢,只能单线程复制,而MySQL 5.7对这一块进行了优化,可以并发复制,而且MySQL 5.7号称比5.6性能快3倍。

诡异的是,升完级,系统变得性能忽快忽慢,Kafka淤积超过1亿条消息。

客户很愤怒,怎么回事!!(注意,此处是惊叹号,而不是问号,说明他根本不关心为什么,而是表达他的不爽)

第一个值得怀疑的是,升级导致的性能下降

开始诊断,查看数据库的CPU、内存、IO、配置参数,在检查配置参数的时候,发现几个明显的参数值设置有问题,当场鄙视客户的DBA,晚上12点叫他起来改参数,没错,企业系统运维就是这么苦逼,修改了之后,发现性能没有提升。

第二个值得怀疑的是,MySQL 5.7的主从复制占用了数据库资源,但从机器负载来看,负载不到5%,所以也很难判断。

第三个值得怀疑的是,STORM系统负荷太高,检查了一圈,STORM负荷都不高,CPU在20%左右。

检查了一圈下来,已是凌晨3点钟,Kafka淤积超过了2亿条,没办法,只能先加几个Worker,把消费速度提高。

At that moment,就在我们停了一个STORM拓扑之后,准备加Worker,突然发现,另一个STORM拓扑的消费速度从每分钟200W条暴涨到每分钟400W条,然后把停掉的拓扑启动起来,另一个拓扑消费速度又降回到每分钟200W条;然后,我们反过来试了一下,停掉另一个拓扑,第一个拓扑的消费速度也暴涨一倍。

判断下来这两个拓扑必定有资源竞争,但是它们是访问两个不同物理节点上的数据库,共享了STORM集群,Kafka集群,Zookeeper集群。

然后挨个排查,这些集群的CPU、内存、IO都不高。

如此判断网络速度被限制了,看了下Zabbix上数据库服务器的流量,流入最高只有5Mb,于是要求客户提升网络带宽。

此处客户使用了某著名外企我前前前东家的私有云产品,已有好几次默默限制网速却不通知的劣迹

但是,结论一出,客户不认同,怎么变成我的问题了!!(注意,此处是惊叹号,而不是问号,说明他根本不关心为什么,而是表达他的不爽)

他当场SCP了一个文件,把传输速率给我们看,Look,尔等,速度有35MB/s,注意是Byte,而不是Bit

此处已经不再是技术问题,而是如何让客户承认的问题

我等还是尽可能的调整参数,确保Kafka淤积不要太多,同时要求客户提升网络带宽

提升带宽的事情没有进展,过了3天,Kafka淤积超过3.5亿条,此刻,我等开始警告客户了,再不调带宽,系统就要崩了。下午客户就加了带宽,没有用

注意,加了带宽也没有用

这种情况往往发生在公有云或私有云上,因为有很多应用共享相同的网络设备,即便给某个应用增加了带宽,但实际上这个应用未必能得到这个带宽

还好这是一个我深爱的土豪客户,早就准备好50多台物理机给我等迁移系统了,奢侈到什么地步呢,Zookeeper节点的配置是20C/256G/2T,唉,怎么可能用满呢?全部都是万兆网卡。

折腾了1个星期,终于把整个系统移到物理机上了,整体性能提升10倍

不容易

    原文作者:路人
    原文地址: https://zhuanlan.zhihu.com/p/22181531
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞