当前位置:网站首页>使用Jmeter虚拟化table失败
使用Jmeter虚拟化table失败
2022-07-05 17:49:00 【飞鸿踏雪Ben归来】
工作中经常会用到Jmeter工具,把在浏览器上东点西点的手工操作,写成脚本,方便CI/CD流程中新的版本的测试,这样可以避免每次版本迭代都手工操作一次。
最近在自动化IBM的CP4D的Data Virtualization这个功能的时候,遇到一个花费了不少功夫才找到根源的问题,在此记录一下,也与大家分享。
问题:在全新的cluster上运行Jmeter脚本,往往在virtualize table这一步发生错误,报错如下。
{
"code": 500,
"message": "Error: CHECK TABLE EXISTENCE -- DB2 SQL Error: SQLCODE=-552, SQLSTATE=42502, SQLERRMC=USER101;IMPLICIT CREATE SCHEMA, DRIVER=4.31.10"
}
当脚本报错的时候,我会先仔细观察一下脚本里的报错,也看看出错的这个request之前的request看是否有出错的;没有头绪的话我就会去浏览器上对相同的数据做一番同样的操作,看是否浏览器上就没有问题。这样我可以判断是脚本问题还是说cluster有问题。
首先,检查脚本里头出错的http request,包括sampler result,request body,request header,response body。特别是request body和request header,要确保无误。怎么确保无误?最直接的方法,就是在浏览器上做相同操作的时候打开浏览器的Inspect功能,去到Network这一栏,可以观察到在浏览器上操作的时候的具体内容。我用的是Firefox浏览器,如图,在浏览器页面上右击,选择Inspect,然后选中Network。从这个时候开始,浏览器上所有的操作都会被记录在Network里。所以我可以看到具体在virtualize table这一步的时候的所有细节,这样我就可以跟脚本里的对比,来确保准确与否。
检查下来,没有发现不一样的地方,也就说这些细节都没问题。而且也说明了在浏览器操作是没有问题的,说明cluster没问题,问题一定在脚本里。问题在哪?
我又试着跑一下脚本,发现没问题了!再删掉所有数据,包括connection、virtualized data、data asset,再跑脚本,也是没问题了!感觉一头雾水。
我想着删掉DV instance从头再来,因为创建DV instance比较费时,一般要一个多小时才能ready。不过为了验证脚本我还是删掉了DV instance,一切从头再跑一遍脚本,包括创建DV instance。
好了,问题又出现了。。。纳闷归纳闷,但是我怀疑可能是我在浏览器上的操作遗留下了什么东西,而这个东西恰好在发送virtualize table这个http request的时候需要的。怎么验证?
我又打开浏览器的Inspect,做virtualize table的操作,然后查看Network里的一条条request。我发现有一条create schema的request,这是个POST,但是我在浏览器里并没有手工创建schema。就是说,当浏览器没找到自动填充的schema的时候,自动发送了一个POST request去创建schema。难道是遗漏了这一步导致的错误?再看看报错,IMPLICIT CREATE SCHEMA,的确报的跟schema有关。
于是,我迅速在Jmeter脚本里加上一个判断,如schema不存在则POST request去创建schema。调通之后,删掉DV instance,跑脚本,果然就没有错误了。
回过头来看,这种问题其实挺隐秘的,因为写脚本的时候,一般都是结合浏览器,边在浏览器上操作,再将request搬到Jmeter里,很可能就会把某个隐藏的自动操作漏掉,而且漏掉之后在同一个cluster里跑脚本还看不出来问题,这是隐藏最深的地方。所以,最好的方法是,在全新的cluster里,第一遍在浏览器上操作的时候,就使用Jmeter的录制功能,把所有request都录制下来,再逐一帅选出来相关的有意义的request。下一篇我再讲讲怎么使用Jmeter录制脚本。
边栏推荐
- 7 pratiques devops pour améliorer la performance des applications
- Cmake tutorial Step2 (add Library)
- 提高应用程序性能的7个DevOps实践
- 求解为啥all(())是True, 而any(())是FALSE?
- JVM第三话 -- JVM性能调优实战和高频面试题记录
- How to save the trained neural network model (pytorch version)
- Sophon AutoCV:助力AI工业化生产,实现视觉智能感知
- 华夏基金:基金行业数字化转型实践成果分享
- 读libco保存恢复现场汇编代码
- [BeanShell] there are many ways to write data locally
猜你喜欢
Why is all (()) true and any (()) false?
华夏基金:基金行业数字化转型实践成果分享
Knowledge points of MySQL (6)
"Xiaodeng in operation and maintenance" is a single sign on solution for cloud applications
ELK日志分析系统
Mongodb (quick start) (I)
云主机oracle异常恢复----惜分飞
Short the command line via jar manifest or via a classpath file and rerun
ISPRS2022/雲檢測:Cloud detection with boundary nets基於邊界網的雲檢測
C # mixed graphics and text, written to the database in binary mode
随机推荐
[JMeter] advanced writing method of JMeter script: all variables, parameters (parameters can be configured by Jenkins), functions, etc. in the interface automation script realize the complete business
Knowledge points of MySQL (7)
Interpretation: how to deal with the current security problems faced by the Internet of things?
南京大学:新时代数字化人才培养方案探讨
破解湖+仓混合架构顽疾,星环科技推出自主可控云原生湖仓一体平台
Sophon KG升级3.1:打破数据间壁垒,解放企业生产力
“12306” 的架构到底有多牛逼?
EPM相关
企业数字化发展中的六个安全陋习,每一个都很危险!
EasyCVR平台通过接口编辑通道出现报错“ID不能为空”,是什么原因?
Anaconda中配置PyTorch环境——win10系统(小白包会)
登录连接 CDB 和 PDB
数值计算方法 Chapter8. 常微分方程的数值解
ISPRS2022/云检测:Cloud detection with boundary nets基于边界网的云检测
Ant financial's sudden wealth has not yet begun, but the myth of zoom continues!
修复漏洞 - mysql 、es
Cmake tutorial step5 (add system self-test)
To solve the problem of "double click PDF file, pop up", please install Evernote program
nacos -分布式事务-Seata** linux安装jdk ,mysql5.7启动nacos配置ideal 调用接口配合 (保姆级细节教程)
Ten capabilities that cyber threat analysts should have