iotDB调整内存占用及注意事项

------------------------------------------------

特别注意,修改配置文件如:conf/datanode-env.sh(bat) 的MEMORY_SIZE时,=等号与数值如2G之间不能有空格,否则不生效

------------------------------------------------

默认占内存可高达80%

可按照以下官方文章进行调整:

原文地址:IoTDB 集群性能优化:内存配置详解_Apache IoTDB_InfoQ写作社区

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

posted @ 2026-02-05 15:19  dirgo  阅读(42)  评论(0)    收藏  举报