优化 Clickhouse:对我们奏效的策略

主要观点:Highlight.io 是开源监控分发,每月摄入近 100TB 可观测性数据,曾因大型客户导致 ClickHouse 集群出现扩展问题,后通过多种策略优化使其更高效、实惠且实时性更强。
关键信息

  • 每月摄入近 100TB 数据,大量数据流向 ClickHouse 集群。
  • 去年为大型客户服务时出现 ClickHouse 相关问题,如插入数据批次小导致 Kafka 队列积压、CPU 负载高等。
  • 采取多种策略优化 ClickHouse 集群,包括减少合并(批量插入、保持数据为宽部分、优化排序粒度、检查合并级别等)、避免使用投影、TTL 优化/清除旧部分等。
    重要细节
  • 采用自定义 Golang 工人进行批量插入但存在数据重复问题,后使用 ClickHouse Kafka Connect Sink 实现批量写入和一次写入语义。
  • 通过设置 min_rows_for_wide_part=0min_bytes_for_wide_part=0 避免数据格式转换消耗 CPU。
  • 改变 ORDER BY 语句以减少合并的 CPU 负载,如从 ORDER BY Timestamp 改为 ORDER BY toStartOfSecond(Timestamp)
  • 观察合并级别了解数据重新合并次数,调整 min_bytes_for_full_part_storage 设置。
  • 避免使用投影,根据查询模式手动选择物化视图。
  • 确保大部分写入到少数分区以减少合并部分数量,设置 TTL 清除旧数据,可手动删除未按 TTL 删除的部分。
阅读 17
0 条评论