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

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

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

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

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

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

问题的现象我就不描述了,无非就是 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 性能分析七步法的价值所在了。

性能分析之两个性能瓶颈分析案例相关推荐

  1. u-boot分析之两阶段代码分析(三)

    目录 u-boot(三)启动文件 1,概述 2,uboot第一阶段代码分析: 汇编 2,uboot第二阶段代码分析 C:_start_armboot C:main_loop u-boot(三)启动文件 ...

  2. 动态执行流程分析和性能瓶颈分析的利器——gperftools的Cpu Profiler

    在<动态执行流程分析和性能瓶颈分析的利器--valgrind的callgrind>中,我们领略了valgrind对流程和性能瓶颈分析的强大能力.本文将介绍拥有相似能力的gperftools ...

  3. 动态执行流程分析和性能瓶颈分析的利器——valgrind的callgrind

    在<内存.性能问题分析的利器--valgrind>一文中我们简单介绍了下valgrind工具集,本文将使用callgrind工具进行动态执行流程分析和性能瓶颈分析.(转载请指明出于brea ...

  4. linux服务器宕机分析/性能瓶颈分析

    linux服务器宕机分析/性能瓶颈分析 服务器宕机原因很多,资源不足.应用.硬件.系统内核bug等,以下一个小例子 服务器宕机了,首先得知道服务器宕机的时间点,然后分析日志查找原因 1.last re ...

  5. 通过 Java 线程堆栈进行性能瓶颈分析

    改善性能意味着用更少的资源做更多的事情.为了利用并发来提高系统性能,我们需要更有效的利用现有的处理器资源,这意味着我们期望使 CPU 尽可能出于忙碌状态(当然,并不是让 CPU 周期出于应付无用计算, ...

  6. java 性能瓶颈_如何通过 Java 线程堆栈来进行性能瓶颈分析?

    改善性能意味着用更少的资源做更多的事情.为了利用并发来提高系统性能,我们需要更有效的利用现有的处理器资源,这意味着我们期望使 CPU 尽可能出于忙碌状态(当然,并不是让 CPU 周期出于应付无用计算, ...

  7. PerfDog性能狗上手体验及总结分析

    一.PerfDog简介 PerfDog性能狗是移动全平台iOS\Android性能测试工具,快速定位分析性能问题,提升APP应用及游戏性能和品质,手机无需ROOT/越狱,手机硬件.游戏及应用无需做任何 ...

  8. mysql性能瓶颈分析和内存占用高的优化

    微信公众号:我其实目前没有耶 我是一个互联网公司的螺丝钉; 魔术师耿 mysql服务器性能瓶颈分析和内存优化 前言 开发阶段,对项目中mysql使用在代码层面已经做了最大努力的优化: 大表减少关联查询 ...

  9. Linux性能优化实战: 套路篇-分析性能问题的一般步骤(55)

    一.上节回顾 上一节,我们一起学习了,应用程序监控的基本思路,先简单回顾一下.应用程序的监控,可以分为指标监控和日志监控两大块. 指标监控,主要是对一定时间段内的性能指标进行测量,然后再通过时间序列的 ...

最新文章

  1. GTX1080 LetNet-5 CPU GPU cuDNN5.1 时间对比
  2. IOS:批量导入图片和视频到模拟器的相册
  3. 一个播放器引发的思考——谈谈React跨组件通信
  4. 应用架构设计“着火”“防火”经验之谈
  5. OSPF实验:OSPF认证
  6. Django中的templates(你的HTML页面放哪里)
  7. docker 容器无法连接外网
  8. 大白菜U盘启动盘手动去除捆绑第三方赞助软件
  9. java velocity js_JavaScript 模板引擎 Velocity.js_js
  10. Aria2Gee 教程
  11. TCR-T细胞治疗最新研究进展(2021年2月)
  12. 大厂面试通行证- Java基础
  13. 第十一届中国云计算标准和应用大会 | 华云数据成为全国信标委云计算标准工作组云迁移专题组副组长单位副组长单位
  14. windows通知栏中显示 微信等应用软件 的通知
  15. php利用表格敬将所选择的数据显示出来,单元格下拉筛选设置/Excel对筛选后的单元格进行下拉填充...
  16. 在PCLVisualizer中添加坐标轴和图片和颜色表
  17. vue实现考勤排班日历(备忘)
  18. 一 ROS基础教程
  19. Springboot(SpringBoot)重试机制retry
  20. 为新购Thinkpad T410打造Windows Server 2008工作环境

热门文章

  1. 计算机保研面试自我介绍,计算机保研面试英文自我介绍.doc
  2. 小马哥-----高仿苹果6P 主板型号Q33 HD 32A刷机拆机主板图与开机识别图 Q系列版本较多 警惕
  3. python从键盘读入一个正整数,程序可判断该数是否为质数,如果是质数,输出 1,否则输出 0。输入用例: 100 输出: 0输入用例: 13输出: 1
  4. 电子商务项目开发计划
  5. 计算机网络国培总结,国培网络研修心得体会
  6. 解读星巴克Q4财报:营收超预期,赛道拥堵加剧咖啡巨头还能笑多久
  7. 与女儿谈商业模式 (2):为什么星巴克会这么成功?
  8. jsp学习之scriptlet的使用方法
  9. Pytorch查看模型中间变量参数
  10. 【渝粤题库】广东开放大学 跨境电商实务英语 形成性考核