美文网首页
接口性能测试+调优+性能指标

接口性能测试+调优+性能指标

作者: lietobrain | 来源:发表于2020-01-02 23:01 被阅读0次

前言

在对一个web进行性能测试过程中,需要开发者掌握一些概念,例如性能测试,到底要测试什么?常见的测试指标有哪些?要怎么做调优?
这里分享一个案例。

案例

有一个接口,需要对上传文件进行分析,流程是上传一个zip文件,解压后进行校验,分析处理后,对文件进行签名,同时返回前也会验证签名一次,再进行zip压缩输出,返回到平台,有几个重要参数,例如,文件摘要值、对文件操作的算法。

zip操作简图

初步解析

这个案例看完后,从开发的角度上看,我们可能会思考,哪一些步骤会出现哪一些瓶颈,哪一个步骤需要采用什么角度来进行优化?
1)签名所用到的算法,对算法调优,或者降低安全性选用低运算的算法
2)上传大文件与下载大文件的网络传输,与本地文件多次读取的处理
3)多文件下,考虑zip的压缩与解压的调优处理
4)不考虑立即同步,是否可以采用异步调用的方式
5)web应用,tomcat容器对上传文件存放在临时文件,考虑减少IO读写
6)有哪些可以采用缓存的方式
7)JVM调优、有那些对象不需要每次都加载、处理...

签名算法

没整理好,待补充

网络传输

没整理好,待补充

zip的压缩与解压

经过压力测试,通过阿里的arthur工具包,发现在压缩与解压过程,耗时不逊于文件上传下载。
这里采用了not buffer copy、buffer copy、nio copy、nio mapped copy、nio pip copy这几种方式来对比压缩过程,文件流读取


zip压缩策略

代码迟点更新到github,待补充,各位看官稍安勿躁

异步调用

接口返回,就不采取同步了,而是提供一个返回的调用接口,执行完返回到这个回调接口,这种方式可以大大提升文件的并发吞吐量。
代码迟点更新到github,待补充,各位看官稍安勿躁

临时文件

考虑是web应用+内存,文件读取远远没那么简单,因为不可能完全让内存去直接对文件操作,所以需要将zip临时存放在服务器上,而不是内存上。
同时如果是tomcat,还会有临时目录处理上传文件,从接口上拿到的数据,并不是请求的数据,而是从tomcat临时文件中再一次获取的数据。
所以这里有居多的IO操作
1)tomcat从获取请求数据在临时文件夹(地址:tomcat.tmp.path);
2)接口获取临时文件位置的数据,存放在配置上指定的文件夹(地址:config.file.path);
3)解压文件,需要将这些files存放在又一个临时文件夹(地址:unzip.files.path);
4)对这一个个文件进行一次页面的签名,防止文件篡改,签完名,同时验证签名值存放临时文件夹(地址:sign.files.path);
5)接着通过unzip对签名文件进行压缩到一个临时文件夹(地址:sign.zip.path);
6)接口读取该地址返回。

需要改造的方向:
1)将tomcat默认的临时文件夹存放,通过springboot的配置改为制定配置的位置
如果是用springboot2.x.x,那么配置server.tomcat.basedir就行了
2)考虑响应式编程,对这个逻辑进行重新设计与重构,即解压一个文件,就立马消费(进行签名+验签),接着在准备压缩,一套流程走一起
... ...
没整理好,待补充

  1. 从性能测试的角度上看,需要测试什么呢?吞吐量、一次请求的响应时间、并发用户数、还有资源使用率,其中资源使用率,例如有CPU的使用情况(算法处理与常规运算),内存使用率(保证足够大的空间能够对单个文件进行处理),磁盘IO的处理(文件读取与写入)

资源使用命令

介绍完以上的一些调优方案,这里介绍一些常用的常见的测试指标,来查看系统资源的命令(Linux)

CPU占用率

vmstat 3
# 查看cpu最后一项,记录us、sy、id的数据值
# us :用户进程消耗的CPU时间百分比
# sy : 内核进程消耗CPU时间百分比
# id : CPU处在空闲状态的时间百分比
# us+sy参考值为80%,如果大于80%,说明可能存在CPU资源不足的情况
# 综上所述,CPU性能评估中重点注意r、us、sy和id列的值。
vmstat查看CPU占用率

或者采用top命令,可以观察%CPU选项,输入数字1可进行排序

top查看CPU占用率

内存使用率

top
# 控制台上实时监控,查看Mem中从测试开始到测试各个阶段使用的内存有多大,MEM占比有多少,这里可以输入字母m来切换显示模式

free
# 不会实时监控,只测试一次
top查看内存使用率 free查看内存使用率

网络I/O

# eno1 为使用的端口
dstat -t -clmnsyr --tcp --net-packets -N eno1

dstat 查看网络IO变化

磁盘I/O

vmstat 3
# bi : 从块设备读入数据的总量,即读磁盘,单位kB/s
# bo : 写入到块设备的数据总量,即写磁盘,单位kB/s
vmstat 查看磁盘IO变化

使用iostat -d -x -k 1 2获取磁盘IO的数据变化情况

iostat 查看磁盘IO变化

未完待续,持续更新


性能测试工具

JMX的使用

配置JAVA或者是web容器里的JAVA_OPTS类似的参数,指定JMX的

Jstat的使用

Jmeter

可视化zabbix

jmeter虽然也可以看,但是效果不佳


可视化zabbix

相关文章

  • 接口性能测试+调优+性能指标

    前言 在对一个web进行性能测试过程中,需要开发者掌握一些概念,例如性能测试,到底要测试什么?常见的测试指标有哪些...

  • JVM与性能调优

    性能测试 在了解性能调优之前,首先得知道什么是性能测试,我们的程序怎样的性能表现才需要进行性能调优 一、性能测试概...

  • 性能测试的分类

    1、狭义性能测试 根据性能指标给出结果的测试。(模拟生产环境) 2、基准测试 给出性能指标。(性能指标未知) 3、...

  • MySQL部分参数调优

    调优参数详情 性能测试脚本实例

  • Jmeter测试移动接口性能--性能调优

    前面写了性能测试如何执行并得到测试报告。现在要开始最重要的一步了。性能调优。 说句实话,性能调优这块我并没有太多的...

  • Linux性能优化实战——CPU调优

    前言 本文基于CPU核心性能指标系统原理,讲解使用排查工具查找常见性能问题,总结CPU调优的一般套路。 性...

  • 性能测试流程与调优

    性能测试流程与调优 概述 分析性能需求 制定性能测试计划 设计场景 编写脚本和程序初始化配置 执行性能测试 分析结...

  • 【读书笔记】《深入性能测试-LoadRunner性能测试》【目录

    书名:深入性能测试-LoadRunner 性能测试、流程、监控、调优全程实战剖析 作者:黄文高 出版信息:中国水利...

  • 性能测试体系搭建计划

    2016/10 计划:理论学习《深入性能测试LoadRunner-性能测试、流程、监控、调优全程实战剖析》等相关资...

  • 前端页面优化

    前端性能测试和调优 讲到性能测试,除了后台的之外,还有一部分是前台的性能测试,前端的性能测试这里主要需要尊从以下规...

网友评论

      本文标题:接口性能测试+调优+性能指标

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