专栏首页7DGroup性能分析之分析决策树2

性能分析之分析决策树2

背景

初学者对性能分析是个《横看成岭侧成峰,远近高低各不同。不识庐山真面目,只缘身在此山中。》那么应该怎么学习才能建立起自己的知识体系,才能做到《千山同一月,万户尽皆春。千江有水千江月,万里无云万里天》今天咱们谈谈7DGroup创始人高楼老师的性能分析之决策树分析法二。

分析树图一

第一层是业务指标,

  • 响应时间
  • TPS
  • 错误率

第二层是操作系统

  • CPU
  • IO
  • MEM
  • NET

分析

在这一层咱们主要关注IO ,既然是关注IO,如果IO高应该怎么去分析?怎么定位?

1、在linux操作系统中IO分析法最常见的命令是iostat

iostat -d -x -k 1 10

Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util

输出信息的含义:

  • rsec/s:每秒读取的扇区数;
  • wsec/:每秒写入的扇区数。
  • avgrq-sz 平均请求扇区的大小
  • avgqu-sz 是平均请求队列的长度。毫无疑问,队列长度越短越好。
  • await:每一个IO请求的处理的平均时间(单位是微秒毫秒)。这里可以理解为IO的响应时间,一般系统IO响应时间应该低于5ms,如果大于10ms就比较大了。这个时间包括了队列时间和服务时间,也就是说,一般情况下,await大于svctm,它们的差值越小,则说明队列时间越短,反之差值越大,队列时间越长,说明系统出了问题。
  • svctm 表示平均每次设备I/O操作的服务时间(以毫秒为单位)。如果svctm的值与await很接近,表示几乎没有I/O等待,磁盘性能很好,如果await的值远高于svctm的值,则表示I/O队列等待太长,系统上运行的应用程序将变慢。
  • %util:在统计时间内所有处理IO时间,除以总共统计时间。例如,如果统计间隔1秒,该设备有0.8秒在处理IO,而0.2秒闲置,那么该设备的%util = 0.8/1 = 80%,所以该参数暗示了设备的繁忙程度。一般地,如果该参数是100%表示设备已经接近满负荷运行了(当然如果是多磁盘,即使%util是100%,因为磁盘的并发能力,所以磁盘使用未必就到了瓶颈)。

主要关注参数参考

  • util:
  • avgqu-sz
  • await:
  • svtm
  • util

IO瓶颈的症状

  • %util 很高
  • await 远大于svctm
  • avgqu-sz比较大
  • cpu > wa 过大 (参考值 超过20)
  • system > bi&bo 过大(参考值 超过 2000)

总结:

《楞严经》中云“理则顿悟,乘悟并销;事非顿除,因次第尽”,简单来说就是道理明白,但事情还需要一件一件的去做,咱们工作与生活也是这样,道理明白,但事情还得一件一件去做,想做好性能测试就得一个组件一个组件去了解,明白每个组件属性,高老师经典一句:“看到指标下一步做什么???”后面的知识沉淀不是一朝一夕的事情。

本文分享自微信公众号 - 7DGroup(Zee_7DGroup),作者:李文

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-12-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 性能测试实战30讲之问题问答整理一

    为了方便大家领悟性能测试微妙心印,本次从老师极客时间专栏中抽出精彩对话,希望大家走上成功之路。

    高楼Zee
  • 性能工具之监控工具nmon自动部署

    在做性能测试需要收集操作系统一些指标方便分析,如果是多台linux系统我们怎么用一个命令启动nmon收集指标,不妨这样试一试,其实有很多方法比如用python、...

    高楼Zee
  • 秒懂HTTPS接口(原理篇)

    讲HTTPS之前,我们先来回顾一下HTTP协议。HTTP是一种超文本传输协议,它是无状态的、简单快速的、基于 TCP 的可靠传输协议。

    高楼Zee
  • Python爬虫经典案例详解:爬取豆瓣电影top250写入Excel表格

    find_all('div',"info"),find是查找,find_all就是查找全部,查找什么呢?查找标记名是div并且class属性是info的全部元素...

    python学习教程
  • InnoDB with reduced page sizes wastes up to 6% of disk space(15.InnoDB减少页的大小会造成6%的磁盘空间浪费)

    InnoDB数据存储的研究中,我提到了MySQL的Bug #67963,题目是“InnoDB每16384页中浪费62页”。我说: InnoDB偶尔需要分配一些...

    冬天里的懒猫
  • 用 Puppeteer 实现简书文章备份

    读了篇文章 《前端使用 puppeteer 爬虫生成《React.js 小书》PDF并合并》。参照这个思路,可以用 Puppeteer 备份简书的文章。

    Joel
  • 前端技巧——性能优化篇

      前端发展至此,前端性能随之变成了一个很有意思的话题。从入门级别的初级工程师,到高级别的专家,都离不开性能问题。那么前端性能该如何理解呢?

    流眸
  • Mysql(10)——聚合函数的用法

    我们想查寻在is_deleted=0下,id的最大值,可用如上语句,可以查出id最大为4. (2)min()的用法 同上:

    gzq大数据
  • 聊聊rocketmq的ExpressionForRetryMessageFilter

    本文主要研究一下rocketmq的ExpressionForRetryMessageFilter

    codecraft
  • 「网站优化」网站优化宝典之用户体验——上帝般的体验

    当然因为用户喜爱度提高了,我们的排名就会非常不错。因为搜索引擎蜘蛛是为了提高用户的体验来对网站排名以及收录。

    大脸猫

扫码关注云+社区

领取腾讯云代金券