MyBatis 是一款优秀的Java持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的XML或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。特别适合分布式和大数据网络数据库的编程。
针对MyBatis插件支持MySQL数据库字段加解密功能,使用http性能基准测试工具wrk,对MyBatis考虑加密与不加密两种对比场景下,数据库数据插入功能的性能;验证数据通过主键查询功能的性能;验证数据通过字段索引进行查询的性能。
使用wrk进行http性能测试,难点主要在以下两个方面:
lua脚本的编写,尤其是需要构造复杂的请求或者嵌套格式的参数;
确定wrk命令的最优参数,包括线程数、连接数和吞吐量。
在测试过程中,参数的设定对测试结果的好坏有直接的影响,一般情况下,是通过多次调试的方法确定参数的合理区间,而要在3个参数之间找到最佳的平衡,所需要的工作量较大,甚至会出现当一个参数的最优并不是其他参数的最优,这就需要测试人员反复尝试,对测试人员的耐性是个很大的考验。
本文作者依据多次的测试场景,总结出一套参数调试经验,开发一个常用的参数调试自动化脚本,可以帮助测试者快速定位最佳的wrk参数,以获取到最优的性能指标:QPS、延时时间
使用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
如对本文有疑问, 点击进行留言回复!!
利用python将Mysql信息以Excel文件并作为邮件附件发送
springmvc+mybaits+mysql上传表情Incorrect string value: ‘\xF0\x9F\xA4\xB4\xF0\x9F...‘ for
SpringCloud Greenwich集成Seata1.2.0详解说明(原创by ulwfcyvi)
mybatis generator生成代码库 与指定的库不一致 为其他库的同名表
网友评论