性能测试报告
性能测试工具:JMeter
环境搭建:到 http://jmeter.apache.org/ 下载JMeter压缩包,无需安装解压即可,点击Jmeter中bin目录下面的jmeter.bat文件即可打开Jmeter了。
测试需求 |
测试过程说明 |
过程标引 |
查询 |
以200线程数查询表格所有信息记录, |
Select 200 |
以300线程数查询表格所有信息记录 |
Select 300 |
|
以400线程数查询表格所有信息记录 |
Select 400 |
1.2.1场景描述
200个用户同时对JDBC发出查询指令
在此情况下数据库管理系统服务器的平均值为122,中值为2,响应时间差异大。响应性能较不稳定。
Sample : 本次测试场景运行200线程;
Average : 平均响应时间 = 122 ms;
Median : 统计意义上的响应时间中值 = 2 ms;
90% line : 所有线程中90%的线程响应时间都小于515 ms ;
95% line : 所有线程中95%的线程响应时间都小于740 ms ;
99% line : 所有线程中99%的线程响应时间都小于926 ms ;
Min : 响应最小时间 = 1 ms;
Max : 响应最大时间 =976 ms ;
Error : 出错率 = 0;
Throughput :吞吐量,每秒42.8个请求。
1.2.2场景描述
300个用户同时对JDBC发出查询指令
在此场景下,数据库管理系统服务器的平均值为147,中值为2,响应时间还是差异大,响应性能较不稳定。并且响应时间有所增加。
Sample : 本次测试场景运行300线程;
Average : 平均响应时间 = 147 ms;
Median : 统计意义上的响应时间中值 = 2 ms;
90% line : 所有线程中90%的线程响应时间都小于680 ms ;
95% line : 所有线程中95%的线程响应时间都小于872 ms ;
99% line : 所有线程中99%的线程响应时间都小于1167 ms ;
Min : 响应最小时间 = 0 ms;
Max : 响应最大时间 =1243 ms ;
Error : 出错率 = 0;
Throughput :吞吐量,每秒58.1个请求。
1.2.3场景描述
400个用户同时对JDBC发出查询指令
在此场景下,数据库管理系统服务器的平均值为78,中值为34,响应时间差异有所减小,并且随着用户数的进一步增加,响应时间越来越长。
Sample : 本次测试场景运行400线程;
Average : 平均响应时间 = 78 ms;
Median : 统计意义上的响应时间中值 = 34 ms;
90% line : 所有线程中90%的线程响应时间都小于194 ms ;
95% line : 所有线程中95%的线程响应时间都小于426 ms ;
99% line : 所有线程中99%的线程响应时间都小于702 ms ;
Min : 响应最小时间 = 0 ms;
Max : 响应最大时间 =832 ms ;
Error : 出错率 = 0;
Throughput :吞吐量,每秒43.87个请求。
从下表的数据可知,随着用户请求数量的增加,数据库服务器的每分钟处理请求数即吞吐量也在逐步增加,平均响应时间没有大幅增加。经过分析可得出以下结论:数据库服务器的系统性能随着用户数量的增加而没有太大改变,此数据库服务器的系统性能良好,测试的数值在其承受范围内。
1.4.1 JDBC Connection Configuration,
JDBC Connection Configuration的配置,如下图:
重要参数说明:
Variable Name:数据库连接池的名称,可以有多个jdbc connection configuration,每个可以起个不同的名称,在jdbc request中可以通过这个名称选择合适的连接池进行使用。
Database URL:数据库url,jdbc:mysql://主机ip或机器名称:mysql监听的端口号/数据库名称
JDBC Driver class:Mysql JDBC驱动
username:数据库登陆的用户名
passwrod:数据库登陆的密码
1.4.2 JDBC request,操作语句:select * from food;
重要的参数说明:
Variable Name:数据库连接池的名字,需要与JDBC Connection Configuration的Variable Name Bound Pool名字保持一致
Query Type:SQL语句类型
Result variable name:创建一个对象变量,保存所有返回的结果
1.4.3 后期数据处理器BeanShell PostProcessor,?编写shell脚本,log.info()将查询结果显示到log上
1.4.4结果
(1)log查询结果
(2)结果树
(3)图形结果
样本数目:总共发送到服务器的请求数 。
最新样本:代表时间的数字,是服务器响应最后一个请求的时间。
吞吐量:服务器每分钟处理的请求数。
平均值:总运行时间除以发送到服务器的请求数。
中间值:时间的数字,有一半的服务器响应时间低于该值,而另一半高于该值。
偏离:服务器响应时间变化、离散程度测量值的大小,即数据的分布。
由于进行的是数据库性能测试,较难找到成熟的大型数据库系统,同时为了防止对大型数据库的测试可能会造成的潜在破坏,因此本测试是基于本地Mysql数据库里的数据进行的。通过编写SQL语句,查找数据库里表格的数据记录来进行性能测试。
团队成员首先经过查找案例,熟悉JDBC测试所需工具及基本流程设置。
但在过程中也碰到一定困难,在创建好JDBC Connection Configuration、JDBC Request和相应的监听器并配置好特定参数后点击“启动”按钮运行,JMeter起初没有任何反应,无法获取测试结果。
在多次参考网络上示例和项目审查后,最终发现缺少了BeanShell PostProcessor对测试结果数据的处理器,此组件用于解析Json数据。并且还缺少用于处理测试结果的代码。完善过程处理机制后,终于能够成功进行JDBC数据库性能测试、产生相应的结果。将数据进行导出操作,在excel中分析、绘制三个用例之间的性能数据对比。
原文:https://www.cnblogs.com/hanyeong2019/p/10968772.html