辅助工具
Jmeter: Apache JMeter 是 Apache 组织开发的基于 Java 的压力测试工具. 用于对软件做压力测试. JMeter 可以用于对服务器, 网络或对象模拟巨大的负载, 来自不同压力类别下测试它们的强度和分析整体性能. 另外, JMeter 能够对应用程序做功能 / 回归测试
简书有个不错的作者写了一个 Jmeter 的系列: 倔强的潇洒小姐 https://www.jianshu.com/nb/22229880
火焰图: 火焰图是用来展示 CPU 调用堆栈的 SVG 图片.
y 轴表示调用栈, 每一层都是一个函数. 调用栈越深, 火焰就 越高, 顶部就是正在执行的函数, 下方都是它的父函数.
x 轴表示抽样数, 如果一个函数在 x 轴占据的宽度越宽, 就表示它被抽到的次数多, 即执行的时间长. 注意, x 轴不代表时间, 而是所有的调用栈合并后, 按字母顺序排列的.
火焰图就是看顶层的哪个函数占据的宽度最大. 只要有 "平顶"(plateaus), 就表示该函数可能存在性能问题.
颜色没有特殊含义, 因为火焰图表示的是 CPU 的繁忙程度, 所以一般选择暖色调.
链路追踪: 链路跟踪其实就是将一次分布式请求还原成调用链路. 显式的在后端查看一次分布式请求的调用情况, 比如各个节点上的耗时, 请求具体打到了哪台机器上, 每个服务节点的请求状态, 每次数据库操作等等. 在进行性能的时候, 可以通过链路跟踪平台记录的接口耗时情况分析性能瓶颈, 进行针对性的优化. 目前主要使用的是 opentracing 协议, 主流的实现有 zipkin 和 jaeger.
概念
性能测试: 通过自动化的测试工具模拟多种正常, 峰值以及异常负载条件来对系统的各项性能指标进行测试.
压力测试: 通过确定一个系统的瓶颈或者不能接受的性能点, 来获得系统能提供的最大服务级别的测试
负载测试: 不限制软件的运行资源, 测试软件的数据吞吐量上限, 以发现设计上的错误或验证系统的负载能力. 评测和评估测试对象在不同工作量条件下的性能行为, 以及持续正常运行的能力.
稳定性测试: 被测试系统在特定硬件, 软件, 网络环境条件下, 给系统加载一定业务压力, 使系统运行一段较长时间, 以此检测系统是否稳定, 一般稳定性测试
指标
CPU: CPU 利用率要低于业界警戒值范围之内, 即小于或者等于 75%.
内存: 内存使用率并不能实际反映系统运行情况. 主要要关注内存交换区占比, 一般认为 70% 为临界值, 在压力, 负载测试下要保证内存可用
磁盘: 磁盘指标主要有每秒读写多少兆, 磁盘繁忙率, 磁盘队列数, 平均服务时间, 平均等待时间, 空间利用率. 其中磁盘繁忙率是直接反映磁盘是否有瓶颈的的重要依据, 一般情况下, 磁盘繁忙率要低于 70%
响应时间: 不同业务的可接受响应时间不同, 互联网企业普通接口应低于 500ms.
稳定性: 一般在 n*12 的时间范围内, 系统应保持稳定
CPU, 内存指标可通过 HTOP,jconsole 指令查看
参考文献
性能测试的指标:
阿里云测试指标: https://help.aliyun.com/document_detail/29338.html
来源: https://www.cnblogs.com/suimeng/p/11425338.html