1 JMeter简介
OApache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。
Apache jmeter 可以用于对静态的和动态的资源(文件,Servlet,Perl脚本,java 对象,数据库和查询,FTP服务器等等)的性能进行测试。它可以用于对服务器、网络或对象模拟繁重的负载来测试它们的强度或分析不同压力类型下的整体性能。你可以使用它做性能的图形分析或在大并发负载测试你的服务器/脚本/对象。
2 准备JDK1.8环境
安装Jmeter之前需要先配置Java环境,我们下载的是jmeter5.2.1,所以java版本最好是选用java8以后的版本。
2.1 下载JDK1.8
jdk8的下载地址:
https://www.oracle.com/cn/java/technologies/javase/javase-jdk8-downloads.html
2.2 安装JDK1.8
下载完成后就可以进行安装了。
至此,jdk安装完成。
2.3 配置环境变量
每次编辑完“环境变量”,都要点击“确定”加以保存,否则,你所“新建/编辑”的环境变量都是无效的。
2.3.1 新建 JAVA_HOME 变量
2.3.2 新建path变量
变量名: path
变量值:%JAVA_HOME%\bin;c:\java\jre\bin;
2.3.3 新建CLASSPATH变量
变量名:CLASSPATH
变量值: .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar(!!!注意最前面有英文.和分号)
2.3.4 测试JDK安装是否完成
安装好jdk,并配置好环境变量后,可以通过cmd命令进行测试,是否安装并配置正确。
- 在“开始”菜单栏键入 cmd,回车后打开cmd窗口;
输入 Java+回车,显示出 java 的相关信息;键入 Javac + 回车,显示出 Java 编译的相关信息,即表示安装并配置成功
- 说明:若想查看所安装jdk的版本信息,可在cmd窗口键入"java -version"(大小写没影响的)。
3 下载并安装JMeter
3.1 下载JMeter
1、 目前最新版为5.2.1,其余文件如源代码等也可从如下官网下载:
http://jmeter.apache.org/download_jmeter.cgi
选择最新版本jmeter 下载:
3.2 安装JMeter
下载完成后就可以进行安装了。
解压apache-jmeter-5.2.1.zip文件至目录,我的是
D:\apache-jmeter-5.4.1\apache-jmeter-5.4.1目录。
3.2.1 配置环境变量
jmeter需要进行环境变量的配置, 点击我的电脑----属性----高级----环境变量----在系统变量中----点击新建,
- 变量名输入:JMETER_HOME
变量值输入:D:\apache-jmeter-5.4.1\apache-jmeter-5.4.1
然后编辑CLASSPATH变量,加上
%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib\logkit-2.0.jar;
3.2.2 启动JMeter
操作完上面的步骤,我们就可以点击Jmeter中bin目录下面的jmeter.bat文件即可打开Jmeter了。
注意:打开的时候会有两个窗口,Jmeter的命令窗口和Jmeter的图形操作界面,不可以关闭命令窗口。
4 JMeter的使用
4.1 配置测试计划
4.1.1 语言切换
4.1.2 两种方式添加jar包
如果要连接达梦数据库,那需要把达梦数据库的JDBC驱动在JMeter中能指定识别的。
第一种把jar包拷贝到lib目下
第二种是在JMeter下面的浏览添加
4.1.3 添加线程组
规定次数:10个并发跑20次,总共跑200次
规定时间:60s内循环跑
4.1.4 添加取样器
4.1.5 监听器的配置
运行测试之后报错,原因是此时未与数据库建立连接。
4.1.6 配置JMeter与达梦数据库建立连接
database URL:
jdbc:dm://192.168.3.100:5236?appName=dmoa
jdbc driver class:
dm.jdbc.driver.DmDriver
4.2 运行测试语句
4.2.1 一个取样器
4.2.2 多个取样器
4.2.2.1 多个取样器共用一个线程组
语句类型不匹配的问题解决
活跃的线程数在运行过程中一直保持不变
响应时间
每秒钟的事务数目
4.2.2.2 每个取样器用自己的线程组
此时数据库接收到连接数为两个线程组的最大连接数之和
4.3 添加聚合报告
执行后查看结果:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210317142056383.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NzeXVwMQ==,size_16,color_FFFFFF,t_70)
4.4 配置多个线程组分别测试
测试过程中可以用以下语句来查看链接和语句:
select * from session;
连接数由连接池数目来决定,线程数大于连接池最大连接数,线程就会产生排队,链接池最大连接数比线程数小太多也不行,这样会造成线程排队,而cpu空间浪费,降低了线程并发的性能;连接池不可以太大,连接池设置过大会产生很多空链接,这些空连接不会发生事务,但是也会占用一定的资源,所以连接池不能设过大。
连接池名称就是appname,建立多个线程组,不同的线程组执行不同的动作,不同的动作用不同的连接池。
4.5 用csv文件来插入数据
这种用法表示从test.csv文件读取数据插入到test这张表中,插入的是字段是id(多个字段在SCV配置的时候可以用逗号隔开即可)。