wrk性能测试实践-Mybatis支持MySQL服务
MyBatis简介:
MyBatis 是一款优秀的Java持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的XML或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。特别适合分布式和大数据网络数据库的编程。
测试需求:
针对MyBatis插件支持MySQL数据库字段加解密功能,使用http性能基准测试工具wrk,对MyBatis考虑加密与不加密两种对比场景下,数据库数据插入功能的性能;验证数据通过主键查询功能的性能;验证数据通过字段索引进行查询的性能。
测试环境架构:
wrk测试脚本自动化
使用wrk进行http性能测试,难点主要在以下两个方面:
-
lua脚本的编写,尤其是需要构造复杂的请求或者嵌套格式的参数;
-
确定wrk命令的最优参数,包括线程数、连接数和吞吐量。
在测试过程中,参数的设定对测试结果的好坏有直接的影响,一般情况下,是通过多次调试的方法确定参数的合理区间,而要在3个参数之间找到最佳的平衡,所需要的工作量较大,甚至会出现当一个参数的最优并不是其他参数的最优,这就需要测试人员反复尝试,对测试人员的耐性是个很大的考验。
本文作者依据多次的测试场景,总结出一套参数调试经验,开发一个常用的参数调试自动化脚本,可以帮助测试者快速定位最佳的wrk参数,以获取到最优的性能指标:QPS、延时时间
1 参数设定的原则
- 线程数:-t ,一般是依据cpu核数来设定,最大值不要超过2倍cpu核数。
- 连接数:-c, 可以理解为并发数,连接数需要在测试过程中多次调试,找到QPS达到最大临界点时的最大并发量;由于服务都有自身的负载极限,也会出现连接数越大QPS越低的情况,这种情况是因为连接数设置的过高,导致待测系统超出自身能承受的负载。
- 吞吐量:-R,是每个线程每秒完成的请求数,这个数值是wrk2必带的一个参数,在测试过程中也是需要测试人员多次调试,通过不断上调其数值,测试出QPS的临界值及保证服务可用的时延。
2 测试脚本优化
测试步骤:
-
使用curl命令验证接口的可用性: curl -H “Content-Type:application/json” -X POST
-d @add.json “url” -
获取系统cpu核数,cat /proc/cpuinfo |grep “processor”|wc -l
-
手动调试确定连接数和吞吐量的最优区间范围,命令格式为: wrk -t 32 -c500 -d
15s -R9000 --latency “url” --script=add.lua
基于以上获取的值,编写测试脚本,如下:
wrk_getSearch.sh
#!bin/bash
url= "https://www.baidu.com/"
thread= $(cat /proc/cpuinfo |grep "processor"|wc -l)
connections = (500 550 600 700)
rate= ( 8000 8500 9000 9500 10000 15000 20000)
for r in ${rate[@]}
do
echo "wrk -t $thread -c 600 -d 10s -R $r $url " >>search.log
for i in {1..3}
do
wrk -t 16 -c 600 -d 10s -R $r $url >>search.log;
sleep 10;
done
done
执行脚本之后,通过log日志,记录不同参数下的QPS和lantency的结果,比如下表所示:
Rate参数值设定 | QPS | latency |
---|---|---|
5000 | 4985 | 4.45ms |
6000 | 5973 | 4.75ms |
7000 | 6965 | 5.11ms |
8000 | 7934 | 6.14ms |
9000 | 8940 | 7.03ms |
10000 | 9855 | 9.05ms |
11000 | 10900 | 11.55ms |
12000 | 11900 | 18.55ms |
13000 | 12865 | 30.41ms |
15000 | 13825 | 340ms |
从以上数据可以看出,在连接数最优情况下,随着rate参数值的升高,QPS和lantecy的值也在增加,但是在最大QPS为13000时,latency的值也很大,从系统稳定性角度考虑,当rate为10000时,此时lantency的值为10ms,则最优的rate参数为10000。
本文地址:https://blog.csdn.net/ccccsy99/article/details/107370399
上一篇: 周冬雨代言!OPPO Reno6系列开启预约:最高配备骁龙870
下一篇: 丑数