-
Notifications
You must be signed in to change notification settings - Fork 108
/
Copy pathconfig.properties
263 lines (237 loc) · 11.6 KB
/
config.properties
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
########################################################
#################### 测试基本配置 ########################
########################################################
################### 被测数据库配置 #######################
# 被测试的数据库,目前的格式为{name}{-version}{-insert mode}(注意-号) 如果不是IoTDB,那么目前不需要{-version}和{-insert mode}参数
# name:IoTDB, InfluxDB, OpenTSDB, KairosDB, TimescaleDB, FakeDB, TaosDB
# version:以IoTDB为例,有09、010、011、012
# insert mode:以IoTDB为例,有JDBC、SESSION_BY_TABLET、SESSION_BY_RECORD、SESSION_BY_RECORDS、SESSION_BY_POOL
DB_SWITCH=InfluxDB-2.0
# 主机列表,如果有多个主机则使用英文逗号进行分割
# 其中如果是influxDB, opentsDB, kairosDB, ctsDB测试时需要完整路径,如"http://localhost"
HOST=127.0.0.1
# 端口列表,需要和HOST数量一致,保持一一对应。如果有多个端口则使用英文逗号进行分割。
# IoTDB: 6667,TimescaleDB: 5432,TaosDB: 6030,InfluxDB:8086
# OpentsDB:4242,CtsDB:9200,KairosDB:8080
PORT=8086
# 所有被测数据库的用户名,如果为多个数据库,则要求保持一致
USERNAME=root
# 所有被测数据库的密码,如果为多个数据库,则要求保持一致
PASSWORD=root
# 即将被测试写入的数据库的名称
DB_NAME=test
# 部分数据库需要添加token, 比如InfluxDB 2.0
TOKEN=token
# 在集群模式下:是否所有数据库都可见,如果可见则可以向其他数据库节点发送数据
IS_ALL_NODES_VISIBLE=false
############### 数据库初始化:清理数据 ####################
# 测试启动前是否清理数据
IS_DELETE_DATA=true
# IS_DELETE_DATA = true 时生效,如果清理数据,则需要等待INIT_WAIT_TIME时间待数据库数据清理完成,当数据库为KairosDB, InfluxDb, OpenTSDB, TimescaleDB时必须
INIT_WAIT_TIME=1000
################### 数据源:Kafka #######################
KAFKA_LOCATION=127.0.0.1:9092
ZOOKEEPER_LOCATION=127.0.0.1:2181
TOPIC_NAME=test-topic
################## Benchmark配置 #######################
# 总操作次数:具体每种类型操作会按OPERATION_PROPORTION定义的比例划分,例如OPERATION_PROPORTION=1:1:1:1:1:1:1:1:1:1:1
LOOP=1000
# 目前Benchmark支持多种运行模式,支持模式如下
# testWithDefaultPath 常规测试模式,支持多种读和写操作的混合负载
# generateDataMode 生成数据模式,生成Benchmark本身识别的数据
# verificationWriteMode 正确性写入模式,需要配置 FILE_PATH 以及 DATA_SET
# verificationQueryMode 正确性查询模式,需要配置 FILE_PATH 以及 DATA_SET
# serverMODE 服务器资源使用监控模式(该模式下运行通过ser-benchmark.sh脚本启动,无需手动配置该参数)
BENCHMARK_WORK_MODE=testWithDefaultPath
# Benchmark的统计信息结果的精度,单位为%
RESULT_PRECISION=0.1
################ Benchmark:集群模式 ####################
# 是否在Benchmark集群模式下运行
BENCHMARK_CLUSTER=false
# 如果 BENCHMARK_CLUSTER=true, 则为当前Benchmark的编号
BENCHMARK_INDEX=0
################ Benchmark:多写模式 ####################
# 是否启动多写模式,即同时写入数据到其他数据库
ENABLE_DOUBLE_INSERT=false
# 其他数据库主机位置,如果有多个则使用英文逗号进行分割
ANOTHER_HOST=127.0.0.1
# 其他数据库端口位置,如果有多个则使用英文逗号进行分割,保持与ANOTHER_HOST一一对应
ANOTHER_PORT=6668
########################################################
################## 数据模式基本配置 #######################
########################################################
############## 数据:设备、传感器、客户端 ##################
# 设备总数
DEVICE_NUMBER=5
# 实际写入设备总数,(0, 1]
REAL_INSERT_RATE=1.0
# 每个设备的传感器总数
SENSOR_NUMBER=10
# 各个传感器时间戳是否对齐
IS_SENSOR_TS_ALIGNMENT=true
# 是否将设备绑定给客户端,如果绑定,则客户端数小于等于设备数,否则可以大于
IS_CLIENT_BIND=true
# 客户端总数
CLIENT_NUMBER=5
############## 被测系统为IoTDB时扩展参数 ##################
# 是否使用thrift压缩
ENABLE_THRIFT_COMPRESSION=false
# Device分配进入存储组的策略,目前支持
# hash 表示Device通过hash的方式分配到存储组中
# mod 表示Device通过对存储组数取模的方式平均分配到存储组中(相邻编号Device分散在不同存储组中)
# div 表示Device通过对存储组数取商的方式分配到存储组中(相邻编号Device集中在相同存储组中)
SG_STRATEGY=mod
# 存储组的数量
GROUP_NUMBER=20
# IoTDB核心线程池数量
IOTDB_SESSION_POOL_SIZE=50
################### 操作时间配置 #########################
# 时间戳间隔,即生成的数据两个时间戳之间的固定长度(如果定长生成),非正常速率
POINT_STEP=5000
# 操作执行间隔:若当前操作耗时大于该间隔则马上执行下一个操作,否则等待 (OP_INTERVAL-实际执行时间) ms
# 如果值为-1,则于POINT_STEP一致
OP_INTERVAL=0
# 时间戳精度,均支持ms,只有IoTDB和InfluxDB支持us
TIMESTAMP_PRECISION=ms
#################### 数据相关参数 ########################
# 字符串规定长度
STRING_LENGTH=2
# 插入数据的比例,BOOLEAN:INT32:INT64:FLOAT:DOUBLE:TEXT
INSERT_DATATYPE_PROPORTION=1:1:1:1:1:1
################ 真实数据集:测试数据 #####################
# 如下两个参数,当且仅当BENCHMARK_MODE = writeWithRealDataSet 和 queryWithRealDataSet 时生效
# 数据文件地址
FILE_PATH=data/test
############### 生成数据集:生成数据规律 ###################
# 线性
LINE_RATIO=1
# 傅里叶函数
SIN_RATIO=1
# 方波
SQUARE_RATIO=1
# 随机数
RANDOM_RATIO=1
# 常数
CONSTANT_RATIO=1
# 数据生成随机数种子
DATA_SEED=666
########################################################
#################### 操作基本配置 ########################
########################################################
################### 操作信息整体配置 #####################
# 各操作的比例,按照顺序为 写入:Q1:Q2:Q3:Q4:Q5:Q6:Q7:Q8:Q9:Q10:Q11, 请注意使用英文冒号。比例中的每一项是整数。
# Qi表示的查询如下:
# Q1 精确点查询 select v1... from data where time = ? and device in ?
# Q2 范围查询(只限制起止时间)select v1... from data where time > ? and time < ? and device in ?
# Q3 带值过滤的范围查询 select v1... from data where time > ? and time < ? and v1 > ? and device in ?
# Q4 带时间过滤的聚合查询 select func(v1)... from data where device in ? and time > ? and time < ?
# Q5 带值过滤的聚合查询 select func(v1)... from data where device in ? and value > ?
# Q6 带值过滤和时间过滤的聚合查询 select func(v1)... from data where device in ? and value > ? and time > ? and time < ?
# Q7 分组聚合查询(GROUP BY)(暂时只能生成有一个时间区间的语句)
# Q8 最近点查询 select time, v1... where device = ? and time = max(time)
# Q9 倒序范围查询(只限制起止时间)select v1... from data where time > ? and time < ? and device in ? order by time desc
# Q10 倒序带值过滤的范围查询 select v1... from data where time > ? and time < ? and v1 > ? and device in ? order by time desc
OPERATION_PROPORTION=1:1:1:1:1:1:1:1:1:1:1
# 最长等待写时间,单位毫秒,即如果整个写操作在指定时间内没有返回,则终止此操作
WRITE_OPERATION_TIMEOUT_MS=120000
# 最长等待读时间,单位毫秒,即如果整个读操作在指定时间内没有返回,则终止此操作
READ_OPERATION_TIMEOUT_MS=300000
################## 操作信息:写入参数 ###################
# 批写入数据行数,每行是某个设备所有传感器在某一时间戳的数据,每个Batch写入数据点数=SENSOR_NUMBER * BATCH_SIZE_PER_WRITE
BATCH_SIZE_PER_WRITE=10
# 是否在写入数据前,创建SCHEMA
CREATE_SCHEMA=true
# 开始写入数据的时间戳
START_TIME=2021-8-01T00:00:00+08:00
################## 操作信息:乱序写入 ###################
# 是否乱序写入
IS_OUT_OF_ORDER=false
# 乱序写入模式,目前如下2种
# 0 按泊松分布的乱序模式
# 1 批插入乱序模式
OUT_OF_ORDER_MODE=0
# 乱序写入的数据的比例
OUT_OF_ORDER_RATIO=0.5
# 是否为等长时间戳
IS_REGULAR_FREQUENCY=true
# 泊松分布的期望和方差
LAMBDA=2200.0
# 泊松分布模型的随机数的最大值 以及 批插入乱序模式的乱序错位单元
MAX_K=170000
################ 操作信息:查询操作参数 ###################
# 时间过滤条件的时间起点变化步长,若设为0则每个查询的时间过滤条件是一样的
STEP_SIZE=1
# 每条查询语句中查询涉及到的传感器数量
QUERY_SENSOR_NUM=1
# 每条查询语句中查询涉及到的设备数量
QUERY_DEVICE_NUM=1
# 在聚集查询中使用的聚集函数,比如count
QUERY_AGGREGATE_FUN=count
# 含起止时间的查询中开始时间与结束时间之间的时间间隔,和Group By中的时间间隔(单位按照精度决定)
QUERY_INTERVAL=250000
# 条件查询子句时的参数,where xxx > QUERY_LOWER_VALUE
QUERY_LOWER_VALUE=-5
# Group by语句中的组的大小
GROUP_BY_TIME_UNIT=20000
# 查询语句的随机数种子
QUERY_SEED=151658
# 条件查询中结果输出项的最大数量
QUERY_LIMIT_N=5
# 条件查询中含有Limit子句的偏移量
QUERY_LIMIT_OFFSET=5
# 条件查询结果输出序列的最大数量
QUERY_SLIMIT_N=5
# 条件查询结果输出序列的偏移量
QUERY_SLIMIT_OFFSET=5
################ Workload:相关参数 ######################
# workload的缓冲区的大小
WORKLOAD_BUFFER_SIZE=100
########################################################
#################### 输出结果配置 ########################
########################################################
# 结果持久化选择,支持None,IoTDB,MySQL和CSV
# 选择IoTDB,请设置IoTDB的timestamp_precision=ns
TEST_DATA_PERSISTENCE=None
############## 输出结果:输出数据库参数 ####################
# 数据库的IP地址
TEST_DATA_STORE_IP=127.0.0.1
# 数据库的端口号
TEST_DATA_STORE_PORT=6667
# 数据库的名称
TEST_DATA_STORE_DB=result
# 数据库用户名
TEST_DATA_STORE_USER=root
# 数据库用户密码
TEST_DATA_STORE_PW=root
# 数据库读超时,单位毫秒
TEST_DATA_WRITE_TIME_OUT=300000
# 数据库写入并发池最多限制
TEST_DATA_MAX_CONNECTION=1
# 对本次实验的备注,作为表名的一部分存入数据库(如MySQL)中,注意不要有.等特殊字符
REMARK=
############ 输出结果:MySQL数据库补充参数 #################
# 真实写入到MySQL数据库的比例
MYSQL_REAL_INSERT_RATE=1.0
################ 输出结果:CSV参数 #######################
# 是否将最终的结果写入到CSV
CSV_OUTPUT=true
# csv文件行数的上线
CSV_MAX_LINE=10000000
# 是否将结果划分后输出到多个csv文件
CSV_FILE_SPLIT=true
################# 输出结果:日志参数 ######################
# 是否使用静默模式,静默模式会关闭部分日志输出
IS_QUIET_MODE=true
# 测试过程日志的输出间隔,单位为秒
LOG_PRINT_INTERVAL=5
################## 监控模式相关参数 ######################
# 监控系统性能的网卡信息,比如 eth0
NET_DEVICE=e
# 被测数据库IoTDB的data文件夹位置,可以是多目录,多目录间用逗号分割
IOTDB_DATA_DIR=/home/iotdb/data/data
# 被测数据库IoTDB的写前日志文件夹位置
IOTDB_WAL_DIR=/home/iotdb/data/wal
# 被测数据库IoTDB的system文件夹位置
IOTDB_SYSTEM_DIR=/home/iotdb/data/system
# 系统性能输出间隔,间隔长度为MONITOR_INTERVAL + 2秒
MONITOR_INTERVAL=0