使用场景
1.是工作中需要直接对数据库进行测试,来得到数据库的瓶颈;
2.当数据库无法性能较差时,可以通过扩展硬件和调节参数来调优,其中如果判定时SQL语句需要进行优化时,部门关联不大的情况下可以直接及将SQL语句拿到数据库中替换对应的参数,直接对数据库中SQL响应时间等进行查看,一遍更好判断调优方向
3.在实际中还可能存在一些登录压测情况,但是不能将账号和密码固定,因为这种情况和实际系统使用时不同,此时,可以用jmeter连接数据库的账号表,直接取出账号和密码等信息进行登录压测,这样更符合系统使用情况。更有深入的情况,可以将登录成功的token等认证信息提取出来,用到后续的增删查改压测中,这个在实际压测中很常见。
怎么使用JMETER和数据库相连接
测试数据库与测试web程序类似,web程序的测试需要提供接口,而数据库测试则需要提供依赖库和连接串来测试
需要的插件
1.下载连接数据库插件 mysql-connector-java
连接mysql的jar包下载地址:https://www.mysql.com/downloads/
下载后将下载的包解压到对应的地方,一边之后再配置jmeter“测试计划”中进行配置,由于我的已经下载了8.0.33版的驱动,所以下面我就直接用8.0.33般的驱动进行演示。
配置实战
1.打开jmeter工具,在测试计划中添加数据库连接配置
2.添加数据配置信息
右击测试计划 → 添加 → 配置元件 → JDBC Connection Configuration
3.添加JDBC配置元件中的配置信息
Database URL:jdbc:mysql://[IP]:[端口]/[数库名]
JDBC Driver class:因为是连接mysql,所以要选择mysql的驱动
4.添加线程组,设置线程组
右击测试计划——添加——线程(用户)——线程组
5. 添加JDBC Request。
右击线程组 → 添加 → 取样器 → JDBC Request
6. 配置JDBC Request。
7.添加必要的监听器.
此处我就暂时只介绍添加的“聚合报告”和“查看结果树”,“jp@gc - Transactions per Second”和“jp@gc - PerfMon Metrics Collector“在后续的介绍中再和大家介绍。
7.1.添加“聚合报告”
右击JDBC Request——添加——监听器——聚合报告
7.2. 添加“查看结果树”
右击JDBC Request——添加——监听器——查看结果树
聚合报告:可以查看事务或者取样器在某个时间范围内执行的汇总结果
各参数意思:
Label:请求的名称,就是我们在进行测试的HTTP请求取样器的名称
样本(Samples):总共发给服务器的请求数量,如果模拟10个用户,每个用户迭代10次,那么总的请求数为:10*10 =100次
平均值(Average):平均响应时间,所有请求的平均响应时间,单位是毫秒
中位数:50%的用户响应时间不超过这个值
90% 百分位:90%的用户响应时间不超过这个值
95% 百分位:95%的用户响应时间不超过这个值
99% 百分位:99%的用户响应时间不超过这个值
最小值:请求的最小响应时间
最大值(Max):请求的最大响应时间
异常 %(Error):异常百分比。(错误请求的数量/请求的总数)
吞吐量(Throughput):每秒取样器执行的数量,相当于 TPS
接收 KB/sec(Received KB/sec):每秒接收的千字节数
发送 KB/sec(Sent KB/sec):每秒发送的千字节数
查看结果树:查看结果树展示了每个取样器的请求结果、请求信息和响应信息。可以通过结果树中的内容来分析脚本是否存在问题
8.查看结果,由于查询和增删改的SQL和类型不同,所以我用两个JDBC Request取样器来进行展示
8.1. 查询的执行情况
8.2. 增删改的执行情况
总结
压测MySQL数据库中关键点
1.数据库驱动配置正确
2.JDBC配置和取样器等各个参数配置需正确
3.配置对应需要的监听器,通过监听器的数据来看压测的数据库情况,一般查看“响应时间”和“吞吐量”的数据情况,响应时间越小越好,吞吐量越高越好。