数据模拟和加载压测工具MatrixBench
MatrixBench简称mxbench,是MatrixDB流式数据加载服务压测和数据模拟工具,可以根据给定的设备数量、时间范围、指标数量等快速生成随机数据,经由MatrixGate,高速插入MatrixDB数据库中。该工具位于MatrixDB安装目录下的bin/mxbench。
MatrixBench提供了丰富的参数来满足不同的测试需求。设备总数由参数tag-range指定,生成的数据均匀分配到各个设备。时间戳以ts-begin为起始值,每插入ts-rps条记录,时间戳增加一秒。指标数由columns-per-row指定,指标类型由column-data-type指定,可以是简单类型或者复合类型如JSON或Array,如果是复合类型,则通过point-data-type指定其中每个具体指标值的数据类型。详细启动参数和说明如下:
参数名 | 参数值 | 参数含义 |
---|---|---|
--table-name | tableName | 必须指定一个目标表名 |
--database | 默认postgres | 目标数据库名 |
--http-host | 默认本机地址 | MatrixGate主机名 |
--http-port | 默认8086 | MatrixGate主机端口号 |
--parallel | 默认等于CPU核数 | 连接到MatrixGate的最大连接数 |
--batch-size | 默认1000 | 每个连接每次请求包含的数据行数 |
--tag-range | 默认50000 | 加载数据的目标设备数目 |
--ts-rps | 默认25000 | 加载数据的时间戳变化频率,默认表示每插入25000条数据,时间戳增加一秒 |
--ts-begin | 默认当前时间 | 加载数据对应的起始时间点 |
--format | 默认text | 加载数据格式:text或csv |
--time-format | 默认unix-second | 时间戳单位:unix-second |
--delimiter | 默认 | | 加载数据每行中的列分隔符 |
--columns-per-row | 默认100 | 加载数据每行的列数 |
--column-data-type | 默认simple | 数据表中指标列类型,当前支持simple单值类型,如float/int,和复合类型json、array |
--points-per-column | 默认3 | 当--column-data-type为复合类型JSON、ARRAY时,每个Column内包含的指标值个数 |
--point-data-type | 默认float8 | 当--column-data-type为复合类型JSON、ARRAY时,Column内每个指标值的数值类型,支持int、float4、float8 |
--use-gzip | 默认FALSE | 发送数据是否开启GZIP压缩 |
使用示例
在demo数据库中创建数据库表如下:
create table sensor_data(
"time" timestamp with time zone not null,
tag_id integer,
tag_value double precision)
Distributed By(tag_id);
启动matrixgate:
mxgate config --db-master-port 5432 --db-database demo --interval 150 > ~/mxgate.conf
mxgate start --config ~/mxgate.conf
执行mxbench:
mxbench --database demo --table-name sensor_data --columns-per-row 1 --column-data-type simple --point-data-type float8
运行mxbench后,可看到这样的输出:
Send to http://127.0.0.1:8086
Parallel level is 64
Point format is simple
Tag range is 50000
TIMESTAMP step is 40000 nano second
16036-03-16 16:55:04: sent OK: 4282000, ERR 0, Lat 147.67ms last10s 147.67ms, Row/s: 428200, last10s 428200
16036-03-16 16:55:14: sent OK: 8506000, ERR 0, Lat 148.12ms last10s 148.58ms, Row/s: 425300, last10s 422400
16036-03-16 16:55:24: sent OK: 12794000, ERR 0, Lat 148.26ms last10s 148.52ms, Row/s: 426466, last10s 428800
OK表示mxbench启动后成功发送和插入的总数据行数,ERR表示总错误数据,Lat表示启动后的平均延迟,Lat后的last10s表示最近10秒的平均延迟,Row/s表示启动后的平均每秒发送的行数,Row/s后的last10s表示最近10秒的平均发送行数。
mxbench启动后会持续压测,直到用户按ctrl-c结束运行退出。