Plausible Community Edition at 500M+ Views: ClickHouseCalc MergeTree Sizing Guide
In our deterministic ClickHouseCalc model, Plausible Analytics stores compact integer and dictionary columns inside `events_v2` and `sessions_v2` tables, allowing ZSTD(9) compression to retain 1,095 days of multi-domain traffic on modest NVMe footprints.
ClickHouseCalc Compression, RAM & TCO Schedule for plausible-analytics-high-traffic
| Ingestion Scale | Raw Volume | MergeTree NVMe Disk | Node RAM & vCPU | Modeled TCO Delta (2026-11-12) |
|---|---|---|---|---|
| 10M Events/Day (3 Years · 9.2 GB/d) | 10.07 TB Raw | 890 GB Disk (ZSTD-9 + 22% Buffer) | 16 GB RAM / 4 vCPU | ~$690/mo Cloud Analytics vs $24.00/mo InterServer Slice |
| 50M Events/Day (3 Years · 46 GB/d) | 50.37 TB Raw | 4.45 TB ZFS/NVMe | 32–64 GB RAM / 8–16 vCPU | ~$2,400/mo Cloud Analytics vs $79.00/mo InterServer Ryzen |
ClickHouseCalc Plausible Elixir & MergeTree Low-Memory Docker Override
services:
plausible_events_db:
image: clickhouse/clickhouse-server:24.8-alpine
ulimits:
nofile:
soft: 262144
hard: 262144
environment:
CLICKHOUSE_SKIP_USER_SETUP: "1"
volumes:
- ./ch-data:/var/lib/clickhouse
- ./ch-low-mem.xml:/etc/clickhouse-server/config.d/low-mem.xml:ro
deploy:
resources:
limits:
memory: 12G
ClickHouseCalc MergeTree Production Checklist for plausible-analytics-high-traffic
- Add `TTL event_date + INTERVAL 7 DAY` to ClickHouse `query_log`, `trace_log`, and `metric_log` in `config.d/system_logs.xml` so internal system logs do not outgrow your Plausible MergeTree tables.
- Serve the 1.2 KB tracker script via a first-party subdomain edge (such as ChemiCloud or Hostinger HTTP/3 CDN) to reduce client-side adblocker script drops.
- Align Elixir `DATABASE_POOL_SIZE=20` and `CLICKHOUSE_DATABASE_POOL_SIZE=15` with available vCPU threads.
ClickHouseCalc Engineering FAQ: plausible-analytics-high-traffic
- Why does ClickHouseCalc warn Plausible CE operators to cap ClickHouse system.trace_log TTL on 100GB VPS disks?
-
Out of the box, ClickHouse retains `system.trace_log`, `system.metric_log`, and `system.part_log` indefinitely; adding a 7-day TTL and truncating stale system tables prevents surprise disk exhaustion on compact NVMe nodes.
- How does ClickHouseCalc evaluate multi-domain query pruning for 50+ client sites on one Plausible MergeTree instance?
-
Plausible leads its MergeTree `ORDER BY` key with `domain_id` (`UInt64`), meaning single-tenant dashboard queries skip unrelated domain granules via `primary.idx` marks.