性能分析之两个性能瓶颈分析案例_客户性能分析案例-程序员宅基地

技术标签: 性能分析  性能  

最近处理了几个项目中的性能问题,来跟大家唠唠。

这几个问题是非常常见的。

性能瓶颈就有这么个特点,大部分瓶颈分析到最后,都给人有一种猛拍大腿突然醒悟的感觉。但是在分析到具体的原因之前,都是抓耳挠腮,百思不解。

这就是性能瓶颈的魅力所在了。

问题一:单队列网卡导致软中断高

这个问题在专栏也好,公众号文章也好,都不止一次描述过。但是看到过的同学们似乎还是没办法在项目中非常快速地定位出来。

问题的现象我就不描述了,无非就是 TPS 压不上去。

先看一下这个压力的路径。

在这里插入图片描述

这是一个清晰的路径。

我们直接来说判断的关键点,这样直面关键数据的描述方式会让有些急性子的人觉得欣慰。

在上图的第二个代理服务器上,看到如下图所示,可以看到有一个SI CPU高达 58.3。

在这里插入图片描述

其实看到这里,如果是对我们以前输出的文章都有看过的人来说,应该已经知道是什么原因了。

这个问题的技术判断和解决方案应该说已经是老生常谈了,其实就是在 KVM 参数里面把 Queues 队列打开。

但是在这个项目中却不是简单就可以解决的。因为上面提到这个基础设施是企业3提供的。而影响的却是企业2的业务服务。

于是企业2联系企业3说,要把虚拟机的配置修改一下支持多队列网卡,企业3说不行,要解决问题去虚拟机操作系统层面解决,别想着改KVM这一层。

于是这样明确可优化的点,也就搁浅了。

这样的场景,我想有很多人都碰到过,一个明确的问题,就因为工作之间的不配合、不理解、渎职导致明显的问题推进不了。

不配合多是发生在多个公司合作的场景中,反正你干你的,我干我的,你别给我带来麻烦就行,反正所有事情只要让我做的,我第一句肯定是拒绝,除非等上层大领导压下来才做。

不理解就更普遍了,技术细节上不懂,又不去深究。要修改吧,又担心出现“可能”的新问题而不去做,而这个“可能”又是因为技术上不懂。记得前阵子我处理过一个数据库的问题,一个DBA为了验证IO能力好不好,直接用DD命令顺序写的测试方式得出存储IO能力差的结论。结果几个公司争吵了两个月都没解决得了问题。

从这些事情可以看出来,性能问题不止是技术问题,还会涉及到沟通、协作甚至合同、商务的问题。

问题2:通过网络队列判断瓶颈点

这是一个生产上的问题。架构简单画一下。

在这里插入图片描述

架构逻辑是非常简单的。在kafka的队列中一直都有没处理完的消息,这个客户的技术人员一直在对着kafka较劲。但是一直也都没有定位出问题。折腾了好多天,辗转反侧来到了我的手里。

我让他们在每个环节上执行了 netstat 检查了队列之后,看到如下情况:
kafka主机上:
在这里插入图片描述

消费服务主机上:
在这里插入图片描述
Hbase主机上:
在这里插入图片描述
以上图中的数据并不是只看瞬间值,刷新了多次都是这样,只截取了一段展示。

从这些信息上就可以看出来,是消费主机上的问题,因为它的recv_Q是有值的,而其他两边都是Send_Q上有值。

于是登录到这个主机上,一通操作。查CPU-查进程-查线程-打印栈,发现只有三个消费线程。

于是问题得以定位,因为消费服务的能力不够,而导致的两边都阻塞。解决的方法也就比较清晰了,增加消费服务线程。

从这两个问题可以看出来,其实问题的判断往往就在某个关键的计数器上。但是从现象到这个关键的计数器却有着一段不容易走的路,这就是我们一直强调的 RESAR 性能分析七步法的价值所在了。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zuozewei/article/details/123974360

智能推荐

【YOLO学习笔记——数据集】之一YOLO数据集制作1(含LabelImg工具讲解)_yolo格式航拍免费数据集-程序员宅基地

文章浏览阅读3.9w次,点赞58次,收藏420次。前言如果你有什么问题,希望跟我能够一起交流,除了通过博客交流外,欢迎你加入我的QQ群,一起交流有关于机器学习、深度学习、计算机视觉有关内容。目前我并未确定具体的研究方向,所以现在 处于广泛涉猎阶段,希望我们能够一起沟通。下图是我的群二维码:一、综述YOLO有自己训练好的数据集,在YOLO v2 中,数据集可检测的类别达9000种以上,但是9000毕竟不是全部,它能涵盖大部分的物体识..._yolo格式航拍免费数据集

远程诊断爆发前夜,谁在领跑主动安全服务?_理想汽车远程线上诊断-程序员宅基地

文章浏览阅读530次。传统汽车的机械式部件正在被越来越多的电子器件取代,当汽车发生故障时,能为其诊断把脉的也只有懂得这套复杂系统的“工程师”才能处理。也因此,越来越多的软件诊断工具被研发推出,服务汽车的完整生命周期。同时,随着汽车厂商面临数字化转型压力以及软件定义汽车的必然趋势,如何节约成本、提高测试及软件调整效率、主动了解汽车运行状态信息、高效解决故障问题风险也成为了汽车厂商急迫解决的问题。来自海外的机构数据显示,汽车远程诊断市场将在未来十年实现强劲增长。到2028年,汽车远程诊断市场预计将以18%左右的复合年增长_理想汽车远程线上诊断

精心整理了42个Python办公自动化真实案例,一口一个,从此办公不加班!_python自动化办公实例-程序员宅基地

文章浏览阅读2.1k次。精心整理了42个Python办公自动化真实案例,一口一个,从此办公不加班!_python自动化办公实例

使用cmder以及xshell等软件git每次拉取代码都需要输入用户名和密码的解决方法_git拉取远程代码用户名密码-程序员宅基地

文章浏览阅读1.1k次。git每次拉取代码都需要输入用户名和密码的解决方法_git拉取远程代码用户名密码

前端首屏优化-程序员宅基地

文章浏览阅读2.1k次。前端通用优化之首屏优化_前端首屏优化

Android vdex 反编译工具 vdexExtractor 使用总结-程序员宅基地

文章浏览阅读5.3k次。Android vdex 反编译工具 vdexExtractor 使用总结前言步骤1:准备system vdex文件步骤2:使用vdexExtractor 工具将 vdex 文件转换成标准的 dex功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建..._vdexextractor

随便推点

【华为OD机试真题 C语言】机器人走迷宫_机器人走迷宫问题-程序员宅基地

文章浏览阅读2.2k次,点赞4次,收藏24次。【华为OD机试真题 C语言】机器人走迷宫_机器人走迷宫问题

继电器、并联的二极管和驱动三极管选型实战演练_继电器二极管选择-程序员宅基地

文章浏览阅读1.7k次,点赞8次,收藏33次。三极管驱动继电器,每个器件怎么选型?本人实际项目经验,功能稳定,看完就会,值得收藏!_继电器二极管选择

web课程设计:html静态网站基于动漫网站网页设计与实现共计4个页面-程序员宅基地

文章浏览阅读146次。1网页简介:此作品为学生个人主页网页设计题材,HTML+CSS 布局制作,web前端期末大作业,大学生网页设计作业源码,这是一个不错的网页制作,画面精明,代码为简单学生水平, 非常适合初学者学习使用。2.网页编辑等任意html编辑软件进行运行及修改编辑等操作)。3.知识应用:技术方面主要应用了网页知识中的: Div+CSS、鼠标滑过特效、Table、导航栏效果、Banner、表单、二级三级页面等,视频、 音频元素 、Flash,同时设计了Logo(源文件)所需的知识点。

如何提交代码到GitHub_com.github.feijeff0486-程序员宅基地

文章浏览阅读475次。关于GitHubGitHub创办于2008年,被市场研究公司Forrester称作“开发者的Facebook”,有逾1000万名注册用户在协作开发2500万个软件项目。个人开发者利用GitHub存储、编写代码,并与其他开发者进行协作;企业和政府机构则利用它托管和管理软件项目。作为开源代码库以及版本控制系统,随着越来越多的应用程序转移到了云上,Github已经成为了管理软件开发以及发现已有代码的首选方_com.github.feijeff0486

基于springboot+aop的自定义注解脱敏,利用java反射机制,更改controller切面返回值,增加返回安全,一个注解即可。_java spring boot 更改方法逻辑-程序员宅基地

文章浏览阅读6k次,点赞6次,收藏30次。基于springboot AOP实现:自定义注解实现快速接入脱敏能力。保护隐私数据。_java spring boot 更改方法逻辑

Java separatorChar 如何在Java里面添加 \-程序员宅基地

文章浏览阅读184次。Java手册separatorCharpublic static final char separatorChar与系统有关的默认名称分隔符。此字段被初始化为包含系统属性 file.separator 值的第一个字符。在 UNIX 系统上,此字段的值为 '/';在 Microsoft Windows 系统上,它为 '\\'。另请参见:System.getProperty(ja..._java 将每个参数都加\

推荐文章

热门文章

相关标签