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越低的情况,这种情况是因为连接数设置的过高,导致待测系统超出自身能承受的负载。