漏数验证

漏数验证的原理是通过查询链路中的数据库中是否存在携带压测标识(PT_开头)的数据来判断压测数据是否有进入到业务库中,在发现这类情况发生时,为避免损害进一步扩大,压测任务会在发现漏数的3秒内自动停止。
使用此功能有几个前置条件需要满足:
1.需要清楚地知道压测的链路中数据会存入哪些数据库的哪些表,可使用链路梳理功能辅助获得这部分消息;
2.需要提前在压测数据的唯一标识字段上携带压测标识,默认是以PT_前缀,也可使用自定义的其他偏移手段,这部分关系到验证命令如何配置;
3.需要对这些验证的数据库进行授权,可提供一个只读权限的授权;

1、配置数据源

由于需要在业务库中进行数据检索,因此控制台需要获得用户的数据库权限,这是进行漏数验证的前置性条件。可前往设置中心>数据源配置中进行设置。

1.点击右上角的新增数据源按钮,可以新建一个数据源配置;

2.按照页面提示输入各类信息,本版本目前仅支持mysql类型的数据库,更多类型的数据库可等待后续版本支持;
3.注意保存前请务必进行调试,以保证本次的设置真实可用。调试时,控制台会向数据库发送一条测试连接数据,仅用于连接确认,不会对数据库产生任务数据影响;
4.保存时若出现错误提示则按照提示进行信息修改即可,保存成功后即完成了一条数据源配置;按照此方法将所有需要检验的数据库均进行配置即可。

2、配置漏数验证脚本

在配置完数据库后,我们还需要根据链路中实际使用到的表和标识字段来设定检查用的sql语句,操作入口在:链路梳理>业务活动>漏数脚本

1.点击漏数脚本进入到命令编辑页面;

2.添加数据源:选择需要验证的数据源,若没有相应数据源数据请参照上一步先进行数据源配置;

3.添加验证命令:此处填写具体执行的语句,由于数据查询会消耗数据库性能,因此我们建议使用limit1的sql语句,即查到一条携带压侧标识的数据即认为产生了漏数,不再执行更多的查询操作;若该链路中用到了多个表或多个标识字段,则对应的也需要填写多条验证命令;例如查询会员表是否漏数,标记字段为会员id,压测标识为PT_,则sql语句可以写成:select user_id from user where user_id like ‘PT_%’ limit1;
4.验证命令添加完保存前请先进行调试,为了保证命令可有效地执行;
5.调试通过后点击确定即可保存该数据源的验证命令,如果有多个数据源需要验证,可按照此方法继续添加其他的数据源;

3、压测漏数验证

1.在添加完漏数脚本后,该业务活动所在的压测场景中就会展示这部分数据,如果是业务流程则会展示多个业务活动的漏数命令;

2.此时还需要完成漏数验证的最后一步设定,设置漏数验证命令的执行时间间隔,这个设定代表了验证命令会以怎样的频率去反复执行直至压测结束或发现了漏数;

3.在正式压测或试跑时,控制台会最后向你确认一遍是否要开启漏数验证。因为漏数验证会一定地消耗数据库性能,因此我们建议在试跑时开启,正式压测时可不开启或使用较低的频率进行验证。

4.压测后,在压测报告中会显示本次压测的漏数验证结果,若无漏数则会在角落中提示没有漏数,此时代表数据没有发生异常;

5.若发生了漏数,则会在压测报告中的显眼位置提示本次压测存在漏数,请尽快确认!

6.点击查看详情可以看到本次漏数的具体情况,如图示则代表jdbc:mysql://114.55.42.181:3306/tankTestDB这个数据源的PT_USER_05表发生了数据泄露;

文档更新时间: 2021-10-14 11:45   作者:ShuLieVip