zoukankan      html  css  js  c++  java
  • Java性能测试从入门到放弃-概述篇

    Java性能测试从入门到放弃-概念篇

    辅助工具

    • Jmeter: Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试
    jmeter
    • 简书有个不错的作者写了一个Jmeter的系列:倔强的潇洒小姐

    • 火焰图:火焰图是用来展示CPU调用堆栈的SVG图片。

    1. y 轴表示调用栈,每一层都是一个函数。调用栈越深,火焰就 越高,顶部就是正在执行的函数,下方都是它的父函数。

    2. x 轴表示抽样数,如果一个函数在 x 轴占据的宽度越宽,就表示它被抽到的次数多,即执行的时间长。注意,x 轴不代表时间,而是所有的调用栈合并后,按字母顺序排列的。

    3. 火焰图就是看顶层的哪个函数占据的宽度最大。只要有"平顶"(plateaus),就表示该函数可能存在性能问题。

    4. 颜色没有特殊含义,因为火焰图表示的是 CPU 的繁忙程度,所以一般选择暖色调。

    火焰图
    • 链路追踪:链路跟踪其实就是将一次分布式请求还原成调用链路。显式的在后端查看一次分布式请求的调用情况,比如各个节点上的耗时、请求具体打到了哪台机器上、每个服务节点的请求状态、每次数据库操作等等。在进行性能的时候,可以通过链路跟踪平台记录的接口耗时情况分析性能瓶颈,进行针对性的优化。目前主要使用的是 opentracing 协议,主流的实现有 zipkin 和 jaeger。

    概念

    • 性能测试:通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。
    • 压力测试:通过确定一个系统的瓶颈或者不能接受的性能点,来获得系统能提供的最大服务级别的测试
    • 负载测试:不限制软件的运行资源,测试软件的数据吞吐量上限,以发现设计上的错误或验证系统的负载能力。评测和评估测试对象在不同工作量条件下的性能行为,以及持续正常运行的能力。
    • 稳定性测试:被测试系统在特定硬件、软件、网络环境条件下,给系统加载一定业务压力,使系统运行一段较长时间,以此检测系统是否稳定,一般稳定性测试

    指标

    • CPU: CPU 利用率要低于业界警戒值范围之内,即小于或者等于75%。
    • 内存:内存使用率并不能实际反映系统运行情况。主要要关注内存交换区占比,一般认为70%为临界值,在压力,负载测试下要保证内存可用
    • 磁盘:磁盘指标主要有每秒读写多少兆,磁盘繁忙率,磁盘队列数,平均服务时间,平均等待时间,空间利用率。其中磁盘繁忙率是直接反映磁盘是否有瓶颈的的重要依据,一般情况下,磁盘繁忙率要低于70%
    • 响应时间:不同业务的可接受响应时间不同,互联网企业普通接口应低于500ms。
    • 稳定性:一般在n*12的时间范围内,系统应保持稳定
    • CPU,内存指标可通过HTOP,jconsole指令查看

    参考文献

  • 相关阅读:
    Effective C# 原则37:使用标准的配置机制(译)
    Effective C# 原则31:选择小而简单的函数(译)
    Effective C# 原则24:选择申明式编程而不是命令式编程(译)
    Effective C# 原则34:创建大容量的Web API(译)
    Effective C# 原则27:避免使用ICloneable(译)
    Effective C# 第4章:创建基于二进制的组件(译)
    Effective C# 原则39:使用.Net验证(译)
    Effective C# 原则35:选择重写函数而不是使用事件句柄(译)
    Effective C# 原则25: 让你的类型支持序列化(译)
    Effective C# 原则38:使用和支持数据绑定(译)
  • 原文地址:https://www.cnblogs.com/suimeng/p/11425338.html
Copyright © 2011-2022 走看看