数据模拟和加载压测工具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结束运行退出。