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

文摘   2024-08-02 17:21   北京  

合理配置 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





规上企业应用实例






能源电力:中核武汉国网信通产业集团华润电力大唐先一上海电气国轩清安储能太极股份绍兴安瑞思


航天航空:中航机载共性北邮一号卫星


钢铁冶炼:宝武钢铁中冶赛迪


交通运输:中车四方长安汽车城建智控德国铁路


智慧工厂与物联:PCB 龙头企业博世力士乐德国宝马京东昆仑数据怡养科技



Apache IoTDB
一款高吞吐、高压缩、高可用、支持存储、管理与分析的物联网原生开源时序数据库系统软件。
 最新文章