---
title: "Building ClickCannon - a tool for benchmarking ClickHouse"
description: "ClickCannon was created to answer how much CPU, memory, and disk are needed for ClickStack observability workloads, while accounting for schema, ingestion rate, hardware, and concurrent queries. It replays about 2 TiB of real OpenTelemetry trace data, converted to ClickHouse Native format with ZSTD compression, rather than relying only on synthetic datasets. A custom multithreaded Go reader/inserter provides control over uncompressed throughput and exposes stream metrics such as compressed and uncompressed bytes, row counts, and block counts, while the framework simulates users and query workloads during ingestion. The project evolved into an open-source, generic ClickHouse benchmarking tool for custom insert and query workloads, with fine-grained control over throughput, concurrency, and user behavior; the post reports that it can push substantial throughput from a single machine."
---

# Building ClickCannon - a tool for benchmarking ClickHouse

[Clickhouse](https://yomu.fyi/company/clickhouse) · Jun 11, 2026

**Type:** Benchmark

## Summary

ClickCannon was created to answer how much CPU, memory, and disk are needed for ClickStack observability workloads, while accounting for schema, ingestion rate, hardware, and concurrent queries. It replays about 2 TiB of real OpenTelemetry trace data, converted to ClickHouse Native format with ZSTD compression, rather than relying only on synthetic datasets. A custom multithreaded Go reader/inserter provides control over uncompressed throughput and exposes stream metrics such as compressed and uncompressed bytes, row counts, and block counts, while the framework simulates users and query workloads during ingestion. The project evolved into an open-source, generic ClickHouse benchmarking tool for custom insert and query workloads, with fine-grained control over throughput, concurrency, and user behavior; the post reports that it can push substantial throughput from a single machine.

## Context

ClickStack users needed estimates of the CPU, memory, and disk required for their observability workloads. Building a sizing model required measuring how schemas, ingestion rates, query patterns, and hardware configurations behave under realistic conditions, including concurrent querying while data is ingested.

## Approach / What changed

ClickCannon replays representative OpenTelemetry data, controls insert throughput with a custom multithreaded Go reader/inserter, simulates concurrent users and query patterns, and collects detailed workload metrics. It was released as a generic framework for custom ClickHouse insert and query benchmarks with control over throughput, concurrency, and user behavior.

## Takeaways

- The benchmarks use about 2 TiB of real OpenTelemetry trace data converted to ClickHouse Native format with ZSTD compression.
- The custom reader/inserter exposes compressed and uncompressed bytes, row counts, and block counts while controlling uncompressed ingest throughput.
- ClickCannon evolved from an internal ClickStack sizing tool into an open-source framework for generic ClickHouse workloads.

**Tags:** [Go](https://yomu.fyi/topic/go), [Open Source](https://yomu.fyi/topic/open-source), [Performance](https://yomu.fyi/topic/performance), [Scalability](https://yomu.fyi/topic/scalability)

- Source: [Clickhouse](https://clickhouse.com/blog/building-clickcannon-a-tool-for-benchmark-clickhouse)
- Source URL: https://clickhouse.com/blog/building-clickcannon-a-tool-for-benchmark-clickhouse
- Ingested by Yomu: 2026-08-29T01:34:56.811Z

[Read original post](https://clickhouse.com/blog/building-clickcannon-a-tool-for-benchmark-clickhouse)
