我在基于 Docker 的集群设置中使用 GridDB 来管理大规模时间序列数据。用例涉及每天提取数百万条记录,同时确保实时分析的高效查询性能。
我从 Docker Hub 提取了 GridDB https://hub.docker.com/r/griddb/griddb镜像,并配置了一个包含 3 个节点的集群。但是,我遇到了以下挑战:
- 高写入延迟:在高峰摄取期间,写入延迟会显著增加。
- 查询性能:具有多种条件(例如时间范围、聚合)的复杂查询比预期的要慢。
- 内存使用情况:各个节点的内存使用量不定期出现峰值,有时会导致节点故障。
当前设置:
• 集群配置:• 在 Docker 容器上运行 3 个节点。• 使用 gs_cluster.json 和 gs_node.json 中的默认配置。• 数据模型:• 时间序列数据存储在容器中,行键作为时间戳。• 常用查询参数的索引列。• 提取率:使用 GridDB Java SDK 约为每秒 50,000 条记录。
迄今采取的措施:
- 调整gs_node.json中的storeMemoryLimit和notificationInterval来管理内存和写入性能。
- 跨多个容器分区数据以减少写入期间的争用。
- 尝试了不同批次大小的摄取以找到最佳配置。
问题:
写入优化:改进 GridDB 中时间序列数据提取的最佳实践是什么?我是否应该调整 dataAffinity 或 checkpointInterval 等特定参数以获得更好的性能?
内存管理:如何优化整个集群的内存使用情况以避免峰值和潜在的节点故障?
查询性能:是否存在高级索引或分区技术可以提高时间范围和聚合查询的查询性能?
监控和调试:是否有任何推荐的工具或技术来监控 GridDB 集群性能并有效识别瓶颈?
参考:
• GridDB 文档:https://docs.griddb.net/
如能得到关于解决这些问题的任何建议或指导,我们将不胜感激。