主要观点:Highlight.io 是开源监控分发,每月摄入近 100TB 可观测性数据,曾因大型客户导致 ClickHouse 集群出现扩展问题,后通过多种策略优化使其更高效、实惠且实时性更强。
关键信息:
- 每月摄入近 100TB 数据,大量数据流向 ClickHouse 集群。
- 去年为大型客户服务时出现 ClickHouse 相关问题,如插入数据批次小导致 Kafka 队列积压、CPU 负载高等。
- 采取多种策略优化 ClickHouse 集群,包括减少合并(批量插入、保持数据为宽部分、优化排序粒度、检查合并级别等)、避免使用投影、TTL 优化/清除旧部分等。
重要细节: - 采用自定义 Golang 工人进行批量插入但存在数据重复问题,后使用 ClickHouse Kafka Connect Sink 实现批量写入和一次写入语义。
- 通过设置
min_rows_for_wide_part=0
和min_bytes_for_wide_part=0
避免数据格式转换消耗 CPU。 - 改变
ORDER BY
语句以减少合并的 CPU 负载,如从ORDER BY Timestamp
改为ORDER BY toStartOfSecond(Timestamp)
。 - 观察合并级别了解数据重新合并次数,调整
min_bytes_for_full_part_storage
设置。 - 避免使用投影,根据查询模式手动选择物化视图。
- 确保大部分写入到少数分区以减少合并部分数量,设置 TTL 清除旧数据,可手动删除未按 TTL 删除的部分。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。