JMeter 线程组执行顺序设置
背景当前请求需要上一个请求响应的数据做参数的值传入到当前请求里,这种情况必须保证上一个请求先执行,才能保证当前请求可以得到参数的值。 操作此示例为将登录之后获取的 cookie 放置到全局变量中,供后续线程组使用。按此配置后,执行顺序会从上到下依次执行。 注:如果使用了不同的线程组可能会遇到非预期执行顺序的现象除了主线程组,还有两种特殊的线程组:setUp 线程组和 tearDown 线程组。它们与主线程组区别在于,setUp 线程在主线程执行前自动触发执行;而 tearDown 线程组在主线程结束后执行。 setUp 线程组可以用于测试准备,比如用它来创建测试用户等。 Teardown 线程组可以用于测试清理工作,比如删除测试用户等。
把 JMeter 结果数据写入到指定文件
背景在日常的功能测试或者性能测试的时候,需要把结果中指定的数据保存到指定的文件,进行使用。 示例围绕 Beanshell 来实现这个功能。 下面从两个方面来实现保存接口返回指定的数据从数据库用 SQL 语句取数据,保存结果到指定文件中保存接口返回指定的数据接口:登录 需求:提取 token 值 新建 HTTP 请求 请求返回的结果,这里直接用 JSON 显示: 新建 JSON 提取器 调试,看有没有获取到值添加 debug sampler 运行,查看 debug sampler 响应数据里面 token 有没有取到值 添加 Beanshell 取样器 代码1234567891011121314151617181920212223242526272829303132333435363738// 指定需要写入到 xxx 文件,若没有该文件会新建;若存在该文件,多次执行将以追加模式展示File file = new File("D:/xxx.txt");if (!file.exists()) { // 创建失败会抛出异常 throw new...
记一次项目压测
结合项目说下压测/调优项目压测,CPU 占用比较大,除了测试服务器本身的性能影响外,还存在项目本身的问题。这是服务器的配置: 4 core, 8G, 磁盘 50g,作为一个高峰期并发不到 1000 的项目,总的来说这个配置还能用。然后并发刚到 30,就这样了: 最下面两条的是两台服务器内存。粉色的是项目所在服务器的 CPU,蓝色是 DB CPU,项目占用 CPU 飙的太狠,所以展开调查。 压测调优步骤压测,将 ramp up 时间弄得稍微长一点。项目是 Docker 服务,JDK 版本 1.8。 docker exec -it id bash:进入容器。需要进入容器操作 jstack 命令 jps -l:查看 Java 服务 PID,当然容器内部就一个服务包和 OpenJDK jstack -l pid >> /opt/xxx.txt:将堆栈信息打出来 通过 jstat -gcutil pid 查看 M 的值,即 MetaSpace 区使用率 通过 jstat -gc pid 2s(间隔时间) 3(持续次数) 命令查看 MU/MC 即 ...
结合 CMD 方式使用 JMeter
使用命令行方式运行Jmeter前言命令行方式支持在多个环境下使用,windosw的dos环境下,也可以在linux环境上执行。 怎么用**执行路径:**执行命令前要检查当前目录是否是%JMeter_Home%\bin目录;如果 JMeter 脚本不在当前目录,需要指定完整的路径;如果要把执行的结果保存在其他地方也要指定完整的路径。命令中不指定测试计划与测试结果的路径时,默认都是在该目录下。 命令:jmeter -n -t <testplan filename> -l <listener filename> 示例测试计划与结果,都在%JMeter_Home%\bin目录1jmeter -n -t test1.jmx -l result.jtl 指定日志路径的1jmeter -n -t test1.jmx -l report\01-result.csv -j report\01-log.log 默认分布式执行1jmeter -n -t test1.jmx -r -l report\01-result.csv -j report\01-log.log ...
Kettle 是什么
Kettle 中文网 免费开源的基于 Java 的企业级 ETL 工具ETL(Extract-Transform-Load 的缩写,即数据抽取、转换、装载的过程),对于企业或行业应用来说,我们经常会遇到各种数据的处理、转换、迁移,所以了解并掌握一种 ETL 工具的使用必不可少。 这里我介绍一个在工作中使用了 3 年左右的 ETL 工具 Kettle,本着好东西不独享的想法,跟大家分享碰撞交流一下!在使用中我感觉这个工具真的很强大,支持图形化的 GUI 设计界面,然后可以以工作流的形式流转,在做一些简单或复杂的数据抽取、质量检测、数据清洗、数据转换、数据过滤等方面有着比较稳定的表现。其中最主要的是,我们通过熟练地应用它,减少了非常多的研发工作量,提高了工作效率。
Kettle 开发中需要注意的问题点
注意点 过滤记录或者字段选择等组件,无法出现上面步骤中的字段的时候,尝试在上面步骤中再次点击确定。 两个数据流 join 前必须先进行排序操作。 数据流从计算器或 join 操作流出,并将流入另一 join 操作之前,需要插入一个字段选择插件。 表输入插件中,填写查询语句时,语句末尾不能加分号。Kettle 8.2 以上无此问题 SQL 脚本插件中,填写 SQL 语句时,语句末尾必须加分号,否则不会执行。Kettle 8.2 以上无此问题 引用变量时,采用 ${变量名} 的方式引用,以免出现问题。此种引用方式还可以在变量内容后接其他字符串,例如:${key}_20151217 会被解析为:value_20151217。 Job 中执行多个 trans 时,如何确定 trans 执行的先后顺序?根据连接线的先后顺序执行,如果需要优先执行则先连接从开始到该 trans 的连线即可。 如果源数据中有空值,但是目标数据中不希望出现空值: 直接设置目标数据库各列的默认值为空字符串是不行的,因为只有不对某列赋值才会填入默认值,而 NUL...
Job 和 Trans 的参数详解
pan 调用示例1sh pan.sh -rep=initech_pdi_repo -user=pgibbons -pass=lumburghsux -trans=TPS_reports_2011 -param:db_ip=$db_ip -param:db_name=$db_name 参数 参数说明 rep 企业或数据库存储库名称 user 仓库用户名 pass 仓库密码 trans 要启动的转换的名称(在存储库中显示) dir 包含转换的存储库目录,包括前导斜杠 file 如果调用的是本地 KTR 文件,则为文件名,如果不在本地目录中,则包括路径 level 日志级别(Basic, Detailed, Debug, Rowlevel, Error, Nothing) logfile 将日志输出写入的本地文件名 listdir 列出指定存储库中的目录 listtrans 列出指定存储库目录中的转换 listrep 列出可用的存储库 exprep 将所有存储库对象导出到一个 XML 文件 norep 防止 Pan 登录到存...
Kettle 记录集合里面的记录数说明
记录集合里面的记录数 该数量是指组件与组件之间通信的缓存队列的 size 大小,Kettle 内部用 List 实现该缓存队列,每一条语句都会被封装成一个 RowSet 对象,每个组件之间都会有个 List<RowSet> 队列,源 step 每次会往该队列写一条数据,目标 step 每次会从队列读取一条数据。 Kettle 里面转换是并行的,数据是一条一条流经每个组件,队列大小采用默认的 10000 条即可。 但是当使用到「阻塞数据直至步骤完成」、「阻塞数据」相关组件时,则需要根据业务数据量扩大该 size 的大小。 否则,数据会一直在某两个组件之间的缓存队列中存放,当数量达到一定大小时,就会卡住不动。 缓存队列的大小对作业没有影响,查看源码发现,缓存队列由 inputRowSet 和 outputRowset 组成,底层实现是 ArrayList,初始化创建的时候,默认容量为 10,并不会直接创建设定长度的数组。并且使用 ArrayList 的特性:当要添加的数据量超过数组的容量时候,ArrayList 会动态扩容,size 扩大 1.5 倍。
Kettle 安装及支持 ClickHouse 开发配置
Kettle 下载地址 选择需要的版本,进入这个路径,下载这个 CE 解压 Kettle 安装包下载 ClickHouse 所需驱动包 将 clickhouse-plugins 文件夹复制到 Kettle 的 data-integration\plugins 文件夹里 复制驱动包里的其余 jar 包,粘贴到 Kettle 的 data-integration\libswt\xxx 目录下根据自己的系统而定,Linux 环境使用 uname -r 先看下系统。 启动 Kettle 编辑工具双击 data-integration 目录下 Spoon.bat 启动。
Kettle ES-Bulk-Insert 组件二开记录(基于 Kettle 9.2)
TODO: 待改造,目前这种可以配置变量的地方却无法配置变量(不识别,只能写死),之后尝试改下。 背景目前 Kettle 最新的版本是 9.2,但是 ES 仅支持到 6.4.2,而且也无法配置用户名和密码还有 schema,所以需要对 es-bulk-insert 组件改造下。 下载源码Kettle GitHub 源码地址 注意:有些包可能国内网络下载不下来,而且国内镜像也没有,就需要单独去想办法了,有人需要的话我会把包发出来。 主要改两个类 ElasticSearchBulk ElasticSearchBulkDialog 前者是业务数据执行需要的,后者是那个组件框需要的,比如你点 Test,就会调用这个类的 test 方法。 首先需要改 pom 文件,改成需要的版本 其次是这些在高版本中弃用的类和方法 在 Elastic 官网中也给出了对应的替代方法:官方迁移指南 ElasticSearchBulk 类的修改如下1234567891011121314151617181920212223242526272829303132333435363738394...
