Jmeter登录并发测试

作者: 风 哥 分类: Linux运维 发布时间: 2019-05-17 09:08
  • 压测环境信息
CentOS Linux release 7.4.1708、CPU 1C、8G RAM
Tomcat8、java version “1.8.0_151”

 

第一阶段60s 100并发,第二阶段120s  500并发,第四阶段120s 1000并发,第五阶段60s 2000并发,第六阶段每 3 分钟加 10 个用户。持续压测1小时这个时候观察,在压力不断增大过程中系统的表现

 

  • 压测工具

 Postman、Jmeter

  • 压测需求

 本次主要针对于用户登录进行并发测试,模拟高并发场景下系统业务是否能够正常运行。在测试过程中观察机器负载情况、内存、网络使用率、磁盘IO情况以及数据库是否正常。

 

  • 请求接口地址

注意:

  • 在客户机和服务器之间进行请求、响应时,两种最常被用到的方法是:GET 和 POST。
  • GET 表示从指定的资源请求数据;POST 表示向指定的资源提交要被处理的数据。

 

利用postman使用Http Post方法请求http://xxxxx.com/auth/login

请求参数

{
"corpCode": "1189",
"accountName": "150xxxxxxxx",
"accountPassword": "xxxx",

}

 

  1. 打开postman在主页面Content部分点击“+”按钮,新增一个接口测试,在左侧下拉选择请求方式,此处以POST请求方式,请求URL地址为企业登录地址。
  2. 在请求体Body中我们选择数据类型使用JSON数据作为请求数据。

  1. Headers中设置请求头部信息,关于conten-type的含义请点击该链接: Conten-Type

  1. 点击Send发送请求,后台服务接受请求后并响应返回执行的结果,返回格式仍为json数据

  • 压测步骤
  1. 打开Jmeter
  2. 添加线程组:企业前台登录并发测试->添加->Threads->线程组
  3. 线程数:并发数60
  4. Ramp-up: 1秒完成60次登录
  5. 循环次数:60次登录循环两次,发送120个请求。

  1. 添加HTTP请求:线程组->添加->取样器->HTTP请求
  2. 将Postman中调试的请求参数数据放入到消息体数据框中。

  1. 添加HTTP信息头

  1. 添加响应断言,断言条件为200

  1. HTTP请求->添加->监听器->断言结果

  1. HTTP请求->添加->监听器->察看结果树

  1. HTTP请求->添加->监听器->聚合报告

  1. 点击绿色箭头开始启动任务

 

测试结果如下

2秒内102个请求,58%左右的登录出现了异常

平均响应时间:39494ms =39.494s
  1. 从业务日志中可以看到在连接数据库的时候抛出了异常

  1. 找到业务连接MySQL的配置文件,里面配置了 MySQL最大的连接数为20

  1. 通过登录到DB服务器通过show processlist查看当前的MySQL连接情况。其中168.1.31的连接数为22个,对此我们需要对业务的配置文件进行增加,maxActive=20 改为200后再进行第二轮压测。

  1. 在压测期间网络带宽在正常范围,在过去的2s 网络带宽流出5kb , 网络带宽流入13.0kb

  1. 系统负载情况在1分钟内上升至17.41,偏高

  1. 下图中可以看出cpu使用率97%被用户态占用了,占用进程为PID118292 Java应用程序。

  1. 在压测期间磁盘io读写有时处于等待繁忙状态

发表评论

电子邮件地址不会被公开。 必填项已用*标注