美文网首页压力测试
性能监控及测试(1)

性能监控及测试(1)

作者: 紫荆秋雪_文 | 来源:发表于2020-06-14 09:13 被阅读0次

    一、性能指标

    1、响应时间(Response Time:RT)

    • 响应时间指用户从客户端发起一个请求开始,到客户端接收到从服务器端返回的响应结束,整个过程所耗费的时间。

    2、HPS(Hits Per Second)

    • 每秒点击次数,单位是次/秒

    3、TPS(Transaction Per Second)

    • 系统每秒处理交易数,单位是笔/秒

    4、QPS(Query Per Second)

    • 系统每秒处理查询次数,单位是次/秒。对于互联网业务中,如果某些业务有且仅有一个请求连接,那么 TPS = QPS = HPS,一般情况下用TPS来衡量整个业务流程,用QPS来衡量接口查询次数,用HPS来表示对服务器单击请求。
    • 无论TPS、QPS、HPS,此指标是衡量系统处理能力非常重要的指标,越大越好,根据经验,一般情况下:
      • 金融行业:1000 TPS ~ 50000 TPS,不包含互联网化的活动
      • 保险行业:100 TPS ~ 100000 TPS,不包括互联网化的活动
      • 制造行业:10 TPS ~ 5000 TPS
      • 互联网电子商务:10000 TPS ~ 1000000 TPS

    5、最大响应时间(Max Response Time)

    • 指用户发出请求或者指令到系统做出反应(响应)的最大时间

    6、最少响应时间(Mininum Response Time)指用户发出请求或者指令到系统做出反应(响应)的最少时间

    7、90%响应时间(90% Resource Time)是指所有用户的响应时间进行排序,第90%的响应时间。

    总结:性能测试主要的三个指标

    1、吞吐量:每秒系统能够处理的请求数、任务数
    2、响应时间:服务处理一个请求或一个任务的耗时
    3、错误率:一批请求中结果出错的请求所占比率

    二、JMeter

    • Mac安装JMeter
    brew install jmeter, 安装成功后查看版本,5.3,成功!
    
    • 设置语言为中文
    1、/usr/local/Cellar/jmeter/5.3/libexec/bin
    2、vim jmeter.properties
    3、language = zh_CN
    
    • 启动JMeter
    终端输入 jmeter
    

    三、JMeter使用

    1、添加程序组

    添加程序组.png
    • 线程数:同一时间请求数
    • Ramp-Up时间(秒):多长时间执行完线程数
    • 循环次数:程序执行次数

    2、HTTP请求

    HTTP请求.png

    3、察看结果数

    察看结果数.png

    4、汇总报告

    汇总报告.png

    5、聚合报告

    聚合报告.png

    6、汇总图

    汇总图.png

    7、测试

    HTTP请求.png 汇总报告.png 聚合报告.png 汇总图.png

    四、JMeter分布式系统测试

    一、分布式组件

    分布式组件.png

    二、分布式项目测试

    • 1、Nginx测试 Nginx测试.png
    • 2、Gateway测试 Gateway测试.png
    • 3、简单服务
    • 简单服务
        @ResponseBody
        @GetMapping("/test")
        public String getTest() {
            return "简单服务";
        }
    
    简单服务.png
    • 4、中间件测试 中间件测试.png
      • 中间件越多,吞吐量越低,响应时间越长
    • 5、内存影响性能 内存影响.png

    五、性能优化

    首先考虑自己的应用属于 CPU 密集型 还是 IO密集型

    影响性能考虑点包括

    • 数据库
    • 应用程序
    • 中间件(Nginx、Gateway、Tomcat)
    • 网络
    • 操作系统

    六、性能监控

    1、JVM内存模型 JVM.png

    2、程序计数器(Program Counter Register)

    • 记录的是正在执行的虚拟机字节码指令的地址
    • 此内存区域是唯一一个在Java虚拟机规范中没有规定任何OutOfMemoryError的区域

    3、虚拟机:VMStack

    • 描述的是Java方法执行的内存模型,每个方法在执行的时候都会创建一个栈帧,用于存储局部变量表,操作数栈,方法接口等信息
    • 局部变量表存储了编译期可知的各种基本数据类型、对象引用
    • 线程请求的栈深度不够会报 StackOverflowError 异常
    • 栈动态扩展的容量不够会报 OutOfMemoryError 异常
    • 虚拟机栈是线程隔离的,即每个线程都有自己独立的虚拟机栈

    4、本地方法:Native Stack

    • 本地方法栈类似于虚拟机栈,只不过本地方法栈使用的是本地方法

    5、堆:Heap

    • 几乎所有的对象实例都在堆上分配内存

    6、堆

    所有的对象实例以及数组都要在堆上分配。堆是垃圾收集器管理的主要区域,也被成为"GC堆";也是我们优化最多考虑的地方。
    堆可以细分为:

    • 新生代
      • Eden 空间
      • From Survivor 空间
      • To Survivor 空间
    • 老年代
    • 永久代/元空间
      • Java8以前永久代,受jvm管理,Java8以后元空间,直接使用物理内存。因此默认情况下,元空间的大小仅受本地内存限制

    相关文章

      网友评论

        本文标题:性能监控及测试(1)

        本文链接:https://www.haomeiwen.com/subject/lvaotktx.html