性能分析十八招,你用哪一招

allowtransparency="true" frameborder="0" scrolling="no" src="http://hits.sinajs.cn/A1/weiboshare.html?url=http%3A%2F%2Fwww.csdn.net%2Farticle%2F2014-08-11%2F2821145-Performance-Analysis-Methodology&type=3&count=&appkey=&title=%E5%AF%B9%E7%B3%BB%E7%BB%9F%E6%88%96%E7%A8%8B%E5%BA%8F%E8%BF%9B%E8%A1%8C%E7%9B%B8%E5%85%B3%E6%80%A7%E8%83%BD%E5%88%86%E6%9E%90%EF%BC%8C%E6%9C%89%E5%8A%A9%E4%BA%8E%E5%88%86%E6%9E%90%E7%A0%94%E7%A9%B6%E8%BF%90%E8%A1%8C%E6%97%B6%E5%87%BA%E7%8E%B0%E7%9A%84%E9%97%AE%E9%A2%98%E6%88%96%E6%9F%A5%E6%89%BE%E5%87%BA%E9%97%AE%E9%A2%98%E6%A0%B9%E6%BA%90%E3%80%82%E8%80%8C%E6%B2%A1%E6%9C%89%E6%96%B9%E6%B3%95%E8%AE%BA%E6%8C%87%E5%AF%BC%E7%9A%84%E5%88%86%E6%9E%90%EF%BC%8C%E5%A6%82%E7%9B%B2%E5%A4%B4%E8%8B%8D%E8%9D%87%EF%BC%8C%E8%B4%B9%E6%97%B6%E8%B4%B9%E5%8A%9B%E3%80%82%E6%9C%AC%E6%96%87%E5%B0%86%E9%98%90%E8%BF%B0%E8%BF%9B%E8%A1%8C%E6%80%A7%E8%83%BD%E5%88%86%E6%9E%90%E9%87%87%E7%94%A8%E7%9A%84%E5%8D%81%E5%85%AB%E4%B8%AA%E6%96%B9%E6%B3%95%E8%AE%BA%E3%80%82&pic=&ralateUid=&language=zh_cn&rnd=1407824363790" width="22" height="16"> 摘要:对系统或程序进行相关性能分析,有助于分析研究运行时出现的问题或查找出问题根源。而没有方法论指导的分析,如盲头苍蝇,费时费力。本文将阐述进行性能分析采用的十八个方法论。

对系统或程序进行相关性能分析,有助于分析研究运行时出现的问题或查找出问题根源。而没有方法论指导的分析,如盲头苍蝇,费时费力。为确保软件满足或超过设计的期望值,有必要分析应用程序的性能以发现潜在的问题。性能分析一个必不可少的环节是使应用程序的组件可见。当能够了解组件是如何交互时,就可以诊断潜在的性能问题。

主要采用的方法论,包括:USE 方法:找出资源瓶颈;TSA 方法:分析程序用时;Off-CPU分析:分析任何类型的线程延时;http://www.brendangregg.com/activebenchmarking.htmlActive Benchmarking(动态基准)分析,进行精确有效的基准分析。

以下将列举出一个综览清单,开始部分包含一些个人不建议的反对的做法,不妨作为一个反面教材来参考。

1. 推诿他人(反对的)

  • 尝试找出一个系统或环境的组件,但是该组件与你无关。
  • 假设问题出在该组件上。
  • 把问题推至与该组件真正相关的团队。
  • 当发现其实也与该团队无关时,重做第一步,继续找别人的茬。
2.  指路明灯(反对的)

  • 采用以下任一方法来选择简便工具:自己熟悉的;在Internet找来的;随机找来的。
  • 运行工具。
  • 找出显眼的问题。

3.  酒徒做法(错误做法)

随机变更事物直到问题离去。

4.  随机变更(错误做法)

  1. 测量一个性能基线。
  2. 随机找出并变更一个属性。
  3. 沿着某一个方向进行变更操作。
  4. 测量系统性能。
  5. 换个方向继续执行变更。
  6. 测量系统性能。
  7. 步骤4或6的结果好于基线吗?如果是,继续执行;否则,执行回退。
  8. 回到步骤1。

5.  被动的基准(错误做法)

  • 选择一个基准工具。
  • 采用不同的选项组合运行工具。
  • 根据结果做一个幻灯片。
  • 按着幻灯片来进行管理。

6.  临时的检查清单法

运行 A,如果出现 B,执行 C。

7.  问题陈述法

  • 什么让你觉得出现了性能问题?
  • 系统之前运作良好吗?
  • 最近执行了什么变更(例如:软件,硬件,负载)?
  • 是潜伏期或运行时间方面的性能减退问题吗?
  • 该问题会影响其他人或程序吗(还是仅仅是自己)?
  • 运行环境是怎么样的?用了什么软件或硬件?版本?配置?
8.  系统法

  • 问题
  • 假设
  • 预测
  • 测试
  • 分析

9.  工作负荷特征描述法

  • 谁正在引起工作负荷?PID,UID,IP地址等。
  • 为什么会产生工作负荷?代码路径
  • 工作负荷是什么?IOPS,tput命令,类型
  • 这些负荷随着时间是怎样变化的?

10.自上而下分析法

  • 从最高级开始
  • 检查下一级别的细节
  • 找出最关注部分进行分解
  • 如果问题得不到解决,重做第2步

11.逐层分析法

从以下方面进行造成延迟的测量:

  • 多语言
  • 执行文件
  •  运行库
  • 系统调用
  • 核心:文件系统,网络
  • 设备驱动

12.延迟分析法

  • 测量运行时间(延迟)
  • 划分成同步的逻辑部件
  • 继续进行划分直到找出延迟的根源
  • 量化:估算系统恢复后带来的速度提升

13.工具法

  • 列出可用的性能分析工具
  • 针对每个工具各自特点列出有用的指标
  • 针对每项指标,作出相关解释
  • 运行挑选后的工具,针对选出的指标进行分析

14.USE方法

对于每项资源,作出如下检查:

  • 利用率(Utilization)
  • 饱和度(Saturation)
  • 错误(Errors)

15. 栈配置法

  • 跟踪线程堆栈信息,针对on-CPU和off-CPU进行分析
  • 联合分析
  • 把堆栈倒置进行分析

16.off-CPU分析法

  • 针对堆栈中每一计划调度线程进行off-CPU时间分析
  • 对类同的堆栈进行联合分析
  • 对于最长和最短用时进行分析

17.TSA方法

1.  针对每一引起重视的线程,测量操作系统线程状态的时间。例如:

  • 执行用时
  • 运行用时
  • 交换用时
  • 睡眠用时
  • 锁用时
  • 闲时时间

2.  使用合适的工具对最高和最低发生频率事件进行分析。

18.动态基准法

  • 以一个足够长的周期来运行测量基准。
  • 运行的时候,使用其他工具进行性能分析,查找出限制因素。

英文出自:brendangregg

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
阿里云性能测试铂金版是一款全链路压测工具,可以用于测试分布式系统、微服务架构、云原生应用等各种场景下的性能指标。使用阿里云性能测试铂金版,您可以轻松地进行负载测试、压力测试、并发测试等,以验证系统的稳定性、可扩展性和性能瓶颈。 以下是一些使用阿里云性能测试铂金版的技巧: 1. 定义场景:在进行测试之前,您需要定义测试场景,包括用户行为、请求类型、请求频率、数据量等。通过定义场景,您可以模拟真实的用户行为,并且可以对系统的不同部分进行针对性的测试。 2. 模拟用户行为:阿里云性能测试铂金版支持模拟多个用户并发访问系统,您可以设置每个用户的请求间隔时间、请求类型、请求参数等。在测试中,您可以根据实际情况动态调整并发用户数,以模拟真实用户的行为。 3. 监控系统指标:阿里云性能测试铂金版可以监控系统的各种指标,包括 CPU 使用率、内存使用率、网络带宽、I/O 等。通过监控这些指标,您可以及时发现系统的瓶颈,并进行优化。 4. 分析测试结果:在测试完成后,您可以通过阿里云性能测试铂金版的分析功能,对测试结果进行分析和统计。您可以查看每个请求的响应时间、误率、吞吐量等指标,以及系统的稳定性、可扩展性等方面的指标。 总之,使用阿里云性能测试铂金版,您可以轻松地进行全链路压测,发现系统的性能瓶颈,提高系统的稳定性和可扩展性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值