web项目接口性能测试与调优

前言

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

  1. 案例:有一个接口,需要对上传文件进行分析,流程是上传一个zip文件,解压后进行校验,分析处理后,对文件进行签名,同时返回前也会验证签名一次,再进行zip压缩输出,返回到平台,有几个重要参数,例如,文件摘要值、对文件操作的算法。
  2. 这个案例看完后,从开发的角度上看,我们可能会思考,哪一些步骤会出现哪一些瓶颈,哪一个步骤需要采用什么角度来进行优化?签名所用到的算法、处理分析算法的调优、上传文件与下载文件的网络传输、zip的压缩与解压,是否可以采用异步的方式、JVM调优、有那些对象不需要每次都加载…
  3. 从性能测试的角度上看,需要测试什么呢?吞吐量、一次请求的响应时间、并发用户数、还有资源使用率,其中资源使用率,例如有CPU的使用情况(算法处理与常规运算),内存使用率(保证足够大的空间能够对单个文件进行处理),磁盘IO的处理(文件读取与写入)

资源使用命令

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

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

vmstat 查看磁盘IO变化

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

iostat 查看磁盘IO变化

网络I/O

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

dstat 查看网络IO变化

未完待续,持续更新


性能测试的Jdk工具

JMX的使用

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

Jstat的使用

发布了16 篇原创文章 · 获赞 3 · 访问量 4995
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章