IoTDB性能调优
配置场景
IoTDB主要利用堆内存完成读写操作。提高IoTDB内存可以有效提高IoTDB读写性能。
配置描述
登录集群FusionInsight Manager页面,选择“集群 > 服务 > IoTDB > 配置 > 全部配置”,进入IoTDB配置界面搜索并修改参数。
配制方法如表1所示。
参数 |
描述 |
默认值 |
调优建议 |
---|---|---|---|
SSL_ENABLE |
客户端到服务端通道SSL加密。 |
true |
“true”表示开启SSL加密,“false”表示关闭SSL加密。数据传输加解密对性能影响较大,经过测试发现具有200%的性能差异,因此建议性能测试时关闭SSL加密。ConfigNode和IoTDBServer两个角色同名参数都要修改。 |
iotdb_server_kerberos_qop |
集群内各个IoTDBServer实例数据传输加密,仅开启Kerberos认证的集群支持该参数。 |
auth-int |
“auth-int”表示数据传输加密,“auth”表示只认证,不加密。因此建议将此参数值修改为“auth”。ConfigNode和IoTDBServer两个角色同名参数都要修改。 |
GC_OPTS |
IoTDBServer使用的内存和GC配置参数。 |
-Xms2G -Xmx2G -XX:MaxDirectMemorySize=512M -XX:+UseG1GC -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=1M -Djdk.tls.ephemeralDHKeySize=3072,需要按实际情况进行配置 |
|
storage_query_schema_consensus_free_memory_proportion |
内存分配比例:写、读、模型、共识、空闲。 |
3:3:1:1:2 |
可根据负载适当调整内存。
|
iot_consensus_throttle_threshold_in_byte |
WAL目录大小上限,默认50GB,单位为字节。超过该值,写操作就会变慢或者被拒绝。 |
53687091200 |
可根据写负载情况适当调整。
|
data_region_iot_max_pending_batches_num |
Leader数据副本同步给Follower的并发最大值。 |
12 |
可根据CPU、WAL积压情况调整。该参数为自定义配置,需选择“IoTDBServer(角色) > 自定义”,在自定义参数“engine.customized.configs”中添加该参数项及参数值。
|
avg_series_point_number_threshold |
当内存数据平均点数达到此阈值时,Flush数据到Tsfile。 |
10000 |
可根据堆内存使用率、GC时长情况调整。
|
flush_proportion |
调用刷盘的写内存比例,如果写入负载极高(如批处理=1000),可以降低该值。 |
0.4 |
可根据堆内存使用率情况调整。若内存使用率高,可适当调小该参数值。 |