写点什么

IoTDB 集群性能优化:内存配置详解

作者:Apache IoTDB
  • 2024-08-02
    北京
  • 本文字数:1029 字

    阅读完需:约 3 分钟

IoTDB 集群性能优化:内存配置详解

IoTDB 是针对时间序列数据采集、存储与分析一体化的数据管理引擎。其性能和运行稳定性在很大程度上依赖于内存的合理配置。本文将详细介绍 IoTDB 内存配置的最佳实践,包括新的脚本参数和计算逻辑。


01 内存配置的重要性


内存配置对于 IoTDB 集群的性能至关重要。合理的内存配置可以提高数据处理效率,减少延迟,同时避免内存溢出导致的服务中断,亦可以精准控制内存避免因内存使用过多导致 IoTDB 进程被系统 OOM Killer。


02 配置方式

方式一:省时省力简配


仅配置 MEMORY_SIZE 参数。MEMORY_SIZE 是 1.3.0 及之后版本中新增的内存控制参数,用于指定 IoTDB 可以使用的总内存大小(堆内+堆外)。


  • 如未设置 MEMORY_SIZE,则脚本将根据系统内存自动计算,ConfigNode 占用内存为系统内存的 30%,DataNode 占用内存为系统内存的 50%。同时系统将根据 MEMORY_SIZE 大小,自动分配堆内和堆外内存,具体规则是:


  • MEMORY_SIZE < 4G:堆内 3/4,堆外 1/4

  • 4G ≤ MEMORY_SIZE < 16G:堆内 4/5,堆外 1/5

  • 16G ≤ MEMORY_SIZE < 128G:堆内 7/8,堆外 1/8

  • 128G ≤ MEMORY_SIZE:堆内 MEMORY_SIZE - 16G,堆外 16G


具体设置方式如下:


  • ConfigNode 内存:设置 conf/confignode-env.sh(bat) 中的 MEMORY_SIZE,单位为 G 或 M


  • DataNode 内存:设置 conf/datanode-env.sh(bat) 中的 MEMORY_SIZE,单位为 G 或 M


方式二:精细配置


分别配置堆内内存 ON_HEAP_MEMORY 与堆外内存 OFF_HEAP_MEMORY 参数。这两个参数是 1.3.0 及之后版本中的内存控制参数,是从历史版本 MAX_HEAP_SIZE、HEAP_NEWSIZE 以及 MAX_DIRECT_MEMORY_SIZE 三个参数优化而来。相比原有设置,理解成本更低,配置更加简便。


如设置 ON_HEAP_MEMORY 与堆外内存 OFF_HEAP_MEMORY 参数,系统将根据用户设置来分配堆内外内存,其优先级高于系统根据 MEMORY_SIZE 自动分配的堆内外内存。


具体设置方式如下:


  • ConfigNode:分别设置 conf/confignode-env.sh(bat) 中的堆内内存 ON_HEAP_MEMORY 与堆外内存 OFF_HEAP_MEMORY


  • DataNode:分别设置 conf/datanode-env.sh(bat) 中的堆内内存 ON_HEAP_MEMORY 与堆外内存 OFF_HEAP_MEMORY


03 总结


V1.3.0 及之后版本通过引入内存控制参数和自动计算逻辑,让 IoTDB 的内存配置变得更加灵活和智能。用户可以根据实际情况轻松调整内存配置,以优化 IoTDB 集群的性能。


关于系统资源规划(CPU、内存、磁盘等)设置的推荐值可以参考官方文档的资源规划:https://www.timecho.com/docs/zh/UserGuide/latest/Deployment-and-Maintenance/Database-Resources.html

用户头像

Apache IoTDB

关注

还未添加个人签名 2021-12-30 加入

海量时序数据管理的解决方案,一款高吞吐、高压缩、高可用、物联网原生的开源时序数据库。

评论

发布
暂无评论
IoTDB 集群性能优化:内存配置详解_Apache IoTDB_InfoQ写作社区