基本概念

  • 并发数 预计有多少用户同时访问。
  • 响应时间 在多用户同时访问的时候服务器的响应时间。(接口响应时间 最多不要超过3s)合理的时间都是在1s之内。
  • 错误率 用户很多的情况下 个别用户页面出错。错误率统计数据基数要尽可能的大一些,统计的数据才会更加准确。 0.1%
  • 吞吐量 服务器每秒处理的事务数。

性能测试的流程

  1. 确定性能指标
    1. 并发数: 50
    2. 响应时间: 1s
    3. 错误率: 0.001
  2. 设计性能测试场景
    1. 创建对应http请求
    2. 设置线程组的并发数
  3. 执行
  4. 出测试报告
  5. 性能不达标,优化之后再测,直到达标为止。

性能测试 - 图1

性能测试

测试场景

  1. 测试Cnode社区
  2. 主要场景:
  3. 1. 用户新建主题
  4. 2. 用户新建评论
  5. ---
  6. 测试指标
  7. 1. 用户数 10
  8. 2. 压测时间 5分钟
  9. 要求
  10. 1. 错误率不超过 0.1%
  11. 2. 最大响应时间 不超过 2s

创建对应的请求

根据业务,创建对应的请求
image.png
需要涉及到上下游传参
image.png

image.png
对应的JMX文件
性能.jmx

准备测试数据

将网站上所有的用户token 导出到文件
testuser.csv

设置csv文件配置
image.png

设置线程组
image.png
循环次数设置为 永远
持续时间设置为 300

  • Ramp-up 时间: 线程启动时间。

聚合报告

线程组—【添加】—【监听器】-【聚合报告】
image.png
运行的时候查看聚合报告
image.png
响应时间的单位:ms 毫秒

  • 样本: 运行的主要请求
  • 平均值: 平均响应时间
  • 中位数: 响应时间的中位
  • 90%: 90%的响应时间
  • 最小值:最小响应时间
  • 最大值:最大响应时间
  • 吞吐量:每秒处理的事务数

监控服务器状态

运行的时候,需要监控服务器状态

  1. htop

htop 需要安装

  1. yum install -y htop

image.png

事务控制器

将同一类型业务的请求放到一起,如果其中有一个请求失败,整个业务就是失败的。
【线程组】—【右键】—【添加】—【逻辑控制器】—【事务控制器】
image.png
将对应的请求放入进去。
image.png

执行的时候事务中如果有一个请求失败,那么这个事务就失败。
image.png
image.png

吞吐量控制器

可以控制不同的人数。
比如: 总共并发10个用户,有8个人在发帖,2个在回复。


【逻辑控制器】—【吞吐量控制器】
image.png
将请求放在不同控制器中。
image.png

性能.jmx

常见面试问题

  1. 如果总共网站有1000个用户,有800个用户在浏览话题,有200个用户在发布话题。线程组怎么做?

有两种解决办法:
办法1:
创建2个线程组,分别在两个线程组中创建请求。
image.png
办法2:
创建1个线程组。线程数设置1000.
在线程组中创建2个吞吐量控制器。
image.png

思考时间

像正常用户那样,正常用户打开页面之后会停留一段时间。比如浏览话题,打开话题之后,正常用户 会在页面上停留3秒。
【添加】—【定时器】—【固定定时器】
image.png

设置等待时间
image.png
使用固定定时器(有些地方叫思考时间)主要为了让测试更加真实。

性能.jmx