1、常用测试工具对比

1、loadrunner 性能稳定,压测结果及细粒度大,可以自定义脚本进行压测,但是太过于重大,功能比较繁多

2、apache ab(单接口压测最方便) 模拟多线程并发请求,ab命令对发出负载的计算机要求很低,既不会占用很多CPU,也不会占用太多的内存,但却会给目标服务器造成巨大的负载, 简单DDOS攻击等

3、webbench webbench首先fork出多个子进程,每个子进程都循环做web访问测试。子进程把访问的结果通过pipe告诉父进程,父进程做最终的统计结果。

2、Jmeter目录文件讲解

bin:核心可执行文件,包含配置

jmeter.bat: windows启动文件:

jmeter: mac或者linux启动文件:

jmeter-server:mac或者Liunx分布式压测使用的启动文件

jmeter-server.bat:mac或者Liunx分布式压测使用的启动文件

jmeter.properties: 核心配置文件

extras:插件拓展的包

lib:核心的依赖包

ext:核心包

junit:单元测试包

3、Jmeter基础功能组件介绍线程组和Sampler

1、添加->threads->线程组(控制总体并发)

线程数:虚拟用户数。一个虚拟用户占用一个进程或线程

准备时长(Ramp-Up Period(in seconds)):全部线程启动的时长,比如100个线程,20秒,则表示20秒内100个线程都要启动完成,每秒启动5个线程

循环次数:每个线程发送的次数,假如值为5,100个线程,则会发送500次请求,可以勾选永远循环

2、线程组->添加-> Sampler(采样器) -> Http

(一个线程组下面可以增加几个Sampler)

名称:采样器名称

注释:对这个采样器的描述

web服务器:

默认协议是http

默认端口是80

服务器名称或IP :请求的目标服务器名称或IP地址

路径:服务器URL

Use multipart/from-data for HTTP POST :当发送POST请求时,使用Use multipart/from-data方法发送,默认不选中。

3、查看测试结果

线程组->添加->监听器->察看结果树

4、Jmeter的断言基本使用

增加断言: 线程组 -> 添加 -> 断言 -> 响应断言

apply to(应用范围):

Main sample only: 仅当前父取样器

进行断言,一般一个请求,如果发一个请求会触发多个,则就有sub

sample(比较少用)

要测试的响应字段:

响应文本:即响应的数据,比如json等文本

响应代码:http的响应状态码,比如200,302,404这些

响应信息:http响应代码对应的响应信息,例如:OK, Found

Response Header: 响应头

模式匹配规则:

包括:是响应文本的一个子集,是包含关系,可以用正则表达式

匹配:使用正则表达式匹配

equals:完全与响应文本相同,不能使用正则表达式

substring:也是包含关系,但是不能使用正则表达式

2、断言结果监听器: 线程组-> 添加 -> 监听器 -> 断言结果

里面的内容是sampler采样器的名称

断言失败,查看结果树任务结果颜色标红

通过结果数里面双击不通过的记录,可以看到错误信息)

3、每个sample下面可以加单独的结果树,然后同时加多个断言,最外层可以加个结果树进行汇总

5、结果聚合报告分析

新增聚合报告:线程组->添加->监听器->聚合报告(Aggregate Report)

lable: sampler的名称

Samples: 一共发出去多少请求,例如10个用户,循环10次,则是 100

Average: 平均响应时间

Median: 中位数,也就是 50% 用户的响应时间

90% Line : 90% 用户的响应不会超过该时间 (90% of the samples took no more than this time. The remaining samples at least as long as this)

95% Line : 95% 用户的响应不会超过该时间

99% Line : 99% 用户的响应不会超过该时间

min : 最小响应时间

max : 最大响应时间

Error%:错误的请求的数量/请求的总数

Throughput: 吞吐量——默认情况下表示每秒完成的请求数(Request per Second) 可类比为qps

KB/Sec: 每秒接收数据量

6、Jmeter用户自定义变量

1、线程组->add -> Config Element(配置原件)-> User Definde Variable(用户定义的变量)

2、引用方式${XXX},在接口中变量中使用

7、CSV数据文件使用

1、线程组->add -> Config Element(配置原件)-> CSV data set config (CSV数据文件设置)

2、如果是多个参数需要同时引用,则在CSV数据文件里面设置加多个字段 Variabled names(comma-delitited): csv_name,csv_pwd

8、数据库压测操作

配置讲解:

1、Thread Group -> add -> sampler -> jdbc request 添加数据库请求

2、jar包添加 mysql-connector-java-5.1.30.jar 添加连接数据库的jar包

3、JDBC connection Configuration 配置

JDBC request->add -> config element -> JDBC connection configuration

核心配置

Max Number of connections : 最大连接数

MAX wait :最大等待时间

Auto Commit: 是否自动提交事务

DataBase URL : 数据库连接地址 jdbc:mysql://127.0.0.1:3306/blog

JDBC Driver Class : 数据库驱动,选择对应的mysql

username:数据库用户名

password:数据库密码

数据库语句:

1、Debug Sampler使用(结果树中查看) Thread Group -> add -> sampler -> debug sampler

2、参数讲解:(sql结尾不要加";")

1、variable name of pool declared in JDBC connection configuration(和配置文件同名)

2、Query Type 查询类型

3、parameter values 参数值

4、parameter types 参数类型

5、variable names sql执行结果变量名

6、result variable names 所有结果当做一个对象存储 7、query timeouts 查询超时时间

8、 handle results 处理结果集

9、Jmeter非GUI界面参数

-h 帮助

-n 非GUI模式

-t 指定要运行的 JMeter 测试脚本文件

-l 记录结果的文件 每次运行之前,(要确保之前没有运行过,即xxx.jtl不存在,不然报错)

-r Jmter.properties文件中指定的所有远程服务器

-e 在脚本运行结束后生成html报告

-o 用于存放html报告的目录(目录要为空,不然报错)

10、Jmeter压测接口的性能优化

1、使用非GUI模式:jmeter -n -t test.jmx -l result.jtl

2、少使用Listener, 如果使用-l参数,它们都可以被删除或禁用。

3、在加载测试期间不要使用“查看结果树”或“查看结果”表监听器,只能在脚本阶段使用它们来调试脚本。

4、包含控制器在这里没有帮助,因为它将文件中的所有测试元素添加到测试计划中。

5、不要使用功能模式,使用CSV输出而不是XML

6、只保存你需要的数据,尽可能少地使用断言

7、如果测试需要大量数据,可以提前准备好测试数据放到数据文件中,以CSV Read方式读取。

8、用内网压测,减少其他带宽影响压测结果

9、如果压测大流量,尽量用多几个节点以非GUI模式向服务器施压

11、Jmeter图形化HTML压测报告dashboard

1、Test and Report informations

Source file:jtl文件名

Start Time :压测开始时间

End Time :压测结束时间

Filter for display:过滤器

Lable:sampler采样器名称

2、APDEX(Application performance Index)

apdex:应用程序性能指标,范围在0~1之间,1表示达到所有用户均满意

T(Toleration threshold):可接受阀值

F(Frustration threshold):失败阀值

3、Requests Summary 请求总结

OK:成功率

KO:失败率

4、Statistics 统计数据

lable:sampler采样器名称

samples:请求总数,并发数*循环次数

KO:失败次数

Error%:失败率

Average:平均响应时间

Min:最小响应时间

Max:最大响应时间

90th pct: 90%的用户响应时间不会超过这个值(关注这个就可以了) 2ms,3ms,4,5,2,6,8,3,9

95th pct: 95%的用户响应时间不会超过这个值

99th pct: 99%的用户响应时间不会超过这个值 (存在极端值)

throughtput:Request per Second吞吐量 qps

received:每秒从服务器接收的数据量

send:每秒发送的数据量

12、Jmeter图形化HTML压测报告Charts报表讲解

1、Over Time(随着时间的变化)

Response Times Over Time:响应时间变化趋势

Response Time Percentiles Over Time (successful responses):最大,最小,平均,用户响应时间分布

Active Threads Over Time:并发用户数趋势

Bytes Throughput Over Time:每秒接收和请求字节数变化,蓝色表示发送,黄色表示接受

Latencies Over Time:平均响应延时趋势

Connect Time Over Time :连接耗时趋势

2、Throughput

Hits Per Second (excluding embedded resources):每秒点击次数

Codes Per Second (excluding embedded resources):每秒状态码数量

Transactions Per Second:即TPS,每秒事务数

Response Time Vs Request:响应时间和请求数对比

Latency Vs Request:延迟时间和请求数对比

3、Response Times

Response Time Percentiles:响应时间百分比

Response Time Overview:响应时间概述

Time Vs Threads:活跃线程数和响应时间

Response Time Distribution:响应时间分布图

13、Jmeter压测注意事项

the firewalls on the systems are turned off or correct ports are opened.

系统上的防火墙被关闭或正确的端口被打开。

all the clients are on the same subnet.

所有的客户端都在同一个子网上。

the server is in the same subnet, if 192.x.x.x or 10.x.x.x IP addresses are used. If the server doesn't use 192.xx or 10.xx IP address, there shouldn't be any problems.

如果使用192.x.x.x或10.x.x.x IP地址,则服务器位于同一子网中。 如果服务器不使用192.xx或10.xx IP地址,则不应该有任何问题。

Make sure JMeter can access the server.

确保JMeter可以访问服务器。

Make sure you use the same version of JMeter and Java on all the systems. Mixing versions will not work correctly.

确保在所有系统上使用相同版本的JMeter和Java。

混合版本将无法正常工作。

You have setup SSL for RMI or disabled it.

您已为RMI设置SSL或将其禁用。

java模拟数据库压测_Jmeter压测工具使用总结相关推荐

  1. java模拟数据库压测_写并发压测 java 脚本你必须会的 3 个类

    性能测试做到后面,一些特殊的场景利用常用的现成工具满足不了需求,所以你需要学习java写一些特定协议的压测脚本,那你不得不研究多线程或线程池,而此时你也一定会遇到java并发编程中的几个类,今天重点讲 ...

  2. java模拟数据库压测_java模拟数据库缓存

    实现缓存一些数据到本地,避免重复查询数据库,对数据库造成压力,代码如下: package threadLock; import java.util.HashMap; import java.util. ...

  3. java模拟数据库压测_java应用的优化【转】

    XX银行网银系统是一套全新的对公业务渠道类系统,经过两年的建设,将逐步对外提供服务. 该系统融合了原来多个对公渠道系统,并发量是以前多个系统之和,吞吐量要求将大幅上升.为了使广大对公客户使用系统时获得 ...

  4. java模拟数据库压测_Jeecgboot Feign、分布式压测、分布式任务调度

    分布式压测 需求场景 一些关键接口需要压测到很高的QPS 需要设置更多的线程去模拟虚拟用户去请求接口 假如需要模拟2万个用户 因为jemeter使用java语言开发 每创建一个线程 jvm默认会为每个 ...

  5. jmeter压测_jmeter压测学习2linux运行jmeter环境

    前言 使用jmeter做压测的时候,在windows上不太稳定,所有一直在linux服务器上使用jmeter做压力测试. 本篇记录下linux上搭建jmeter环境,以及运行jmeter脚本,查看报告 ...

  6. Mysql8.0.12解压版安装亲测(步骤超级简单)

    Mysql8.0.12解压版亲测 1.下载(官方推荐的是下载安装板,但是之前一直用,想试一下解压版,毕竟更简单嘛) https://dev.mysql.com/downloads/mysql/ 2.解 ...

  7. Java实现文件压缩与解压[zip格式,gzip格式]

    原文:http://www.cnblogs.com/visec479/p/4112881.html#3069573 Java实现ZIP的解压与压缩功能基本都是使用了Java的多肽和递归技术,可以对单个 ...

  8. JAVA 7z Seven Zip 压缩和解压文件

    JAVA 7z Seven Zip 压缩和解压文件 7-Zip是基于GNU LGPL协议发布的软件,通过全新算法使压缩比率大幅提升 本文主要讲解通过JAVA方式把文件压缩成7z文件和对7z文件进行解压 ...

  9. 基于JAVA模拟考试系统计算机毕业设计源码+数据库+lw文档+系统+部署

    基于JAVA模拟考试系统计算机毕业设计源码+数据库+lw文档+系统+部署 基于JAVA模拟考试系统计算机毕业设计源码+数据库+lw文档+系统+部署 本源码技术栈: 项目架构:B/S架构 开发语言:Ja ...

最新文章

  1. 世界经济论坛2019年年会开幕
  2. javascript中对变量类型的判断
  3. Java 打 jar 包时,MANIFEST.MF 文件详解
  4. chrome修改js数据怎么生效_chrome浏览器中 F12 功能的简单介绍
  5. python重写和装饰器_python装饰器
  6. ueditor富文本编辑器过滤了代码,如何取消?
  7. c语言atm实训报告总体框架图,实训报告-ATM.doc
  8. 华为机试HJ68:成绩排序
  9. AI学习笔记(二)图像与视频
  10. 30种图像动画特效算法(C#多线程版)(上)
  11. matlab串口实时画图,基于MATLABGUI界面的MCU串口实时绘图设计
  12. 中国互联网寒冬的根本原因是什么?
  13. H3C VRRP实验
  14. Python | 计算给定数字的平方(3种不同方式)
  15. 支付宝公布春节抢红包大数据 金华人全国第五壕
  16. mysql 按照条件计数_Mysql按条件计数的几种方法
  17. 小内存的iPhone的拯救手册:如何扩充iPhone的内存
  18. 下载iconfont图标
  19. PyTorch中FLOPs计算问题
  20. 项目经历 - 卷积网络识别古日文

热门文章

  1. 五月数据库技术通讯丨Oracle 12c因新特性引发异常Library Cache Lock等待
  2. 循序渐进Oracle:数据库的字符集和字符集文件
  3. CNCF Serverless工作流社区携手华为云FunctionGraph,开拓Serverless编排新时代
  4. 搭建亿级时间线数据的监控系统,我有绝招!
  5. 十八般武艺玩转GaussDB(DWS)性能调优:SQL改写
  6. 5G to B核心网建设白皮书发布:2025年运营商toB市场高达6020亿美元
  7. 9块钱,构建个私有网盘,关键不限速
  8. 华为云ModelArts 2.0全面升级,革新传统AI开发模式
  9. 大型情感剧集Selenium:6_selenium中的免密登陆与cookie操作 #华为云·寻找黑马程序员#
  10. SurfaceGo配置轻量级LaTeX写作环境(MiKTeX)