From 14fde64f742b68ba703d93822003b35f24f007c2 Mon Sep 17 00:00:00 2001 From: Yann SEGET Date: Mon, 10 Aug 2026 08:17:45 +0200 Subject: [PATCH 1/2] fix(hosting): disable ClickHouse system-log telemetry tables and apply profile settings via users.d ClickHouse's system log tables ship unbounded (no TTL); on the recommended webapp machine size their background merges eventually exceed the memory cap and are retried forever, pinning the CPU and failing the webapp's own inserts. Port the dev stack's disable list (PR #3565) to hosting/docker, keep query_log/error_log with a config-level TTL, and move the profile settings to users.d where they actually take effect. fixes #4343 Co-Authored-By: Claude Fable 5 --- .../hosting-clickhouse-system-logs.md | 6 +++ hosting/docker/clickhouse/override.xml | 48 +++++++++++++++---- hosting/docker/clickhouse/users-override.xml | 21 ++++++++ hosting/docker/webapp/docker-compose.yml | 1 + 4 files changed, 67 insertions(+), 9 deletions(-) create mode 100644 .server-changes/hosting-clickhouse-system-logs.md create mode 100644 hosting/docker/clickhouse/users-override.xml diff --git a/.server-changes/hosting-clickhouse-system-logs.md b/.server-changes/hosting-clickhouse-system-logs.md new file mode 100644 index 0000000000..efd4166ae5 --- /dev/null +++ b/.server-changes/hosting-clickhouse-system-logs.md @@ -0,0 +1,6 @@ +--- +area: hosting +type: fix +--- + +Self-hosted ClickHouse no longer accumulates unbounded system-log telemetry (metric_log, text_log, asynchronous_metric_log, ...) that eventually pins the CPU in a background merge-retry loop on the recommended machine size; query_log and error_log are kept with a TTL, and the low-memory profile settings now actually apply (moved from config.d to users.d). diff --git a/hosting/docker/clickhouse/override.xml b/hosting/docker/clickhouse/override.xml index 41897c2984..f9088054a7 100644 --- a/hosting/docker/clickhouse/override.xml +++ b/hosting/docker/clickhouse/override.xml @@ -9,12 +9,42 @@ 524288000 1 - - - 8192 - 1 - 0 - 0 - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + event_date + INTERVAL 7 DAY DELETE + + + event_date + INTERVAL 30 DAY DELETE + + + + diff --git a/hosting/docker/clickhouse/users-override.xml b/hosting/docker/clickhouse/users-override.xml new file mode 100644 index 0000000000..a3964125b8 --- /dev/null +++ b/hosting/docker/clickhouse/users-override.xml @@ -0,0 +1,21 @@ + + + + + 8192 + 1 + 0 + 0 + + 0 + 0 + 0 + 0 + + + diff --git a/hosting/docker/webapp/docker-compose.yml b/hosting/docker/webapp/docker-compose.yml index a8bc1167b7..b893c17eca 100644 --- a/hosting/docker/webapp/docker-compose.yml +++ b/hosting/docker/webapp/docker-compose.yml @@ -177,6 +177,7 @@ services: - clickhouse:/var/lib/clickhouse - ../clickhouse/data-paths.xml:/etc/clickhouse-server/config.d/data-paths.xml:ro - ../clickhouse/override.xml:/etc/clickhouse-server/config.d/override.xml:ro + - ../clickhouse/users-override.xml:/etc/clickhouse-server/users.d/override.xml:ro networks: - webapp healthcheck: From 75f4f5946e36e3e6b3933187e1873f8c3b869e2b Mon Sep 17 00:00:00 2001 From: Yann SEGET Date: Mon, 10 Aug 2026 08:48:38 +0200 Subject: [PATCH 2/2] chore: reword .server-changes entry as a user-facing release note Co-Authored-By: Claude Fable 5 --- .server-changes/hosting-clickhouse-system-logs.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.server-changes/hosting-clickhouse-system-logs.md b/.server-changes/hosting-clickhouse-system-logs.md index efd4166ae5..dc6724232f 100644 --- a/.server-changes/hosting-clickhouse-system-logs.md +++ b/.server-changes/hosting-clickhouse-system-logs.md @@ -3,4 +3,4 @@ area: hosting type: fix --- -Self-hosted ClickHouse no longer accumulates unbounded system-log telemetry (metric_log, text_log, asynchronous_metric_log, ...) that eventually pins the CPU in a background merge-retry loop on the recommended machine size; query_log and error_log are kept with a TTL, and the low-memory profile settings now actually apply (moved from config.d to users.d). +Self-hosted ClickHouse now disables its unbounded internal telemetry tables and keeps query/error logs on a bounded retention, fixing runaway CPU and memory usage on the recommended machine size. Existing self-hosted deployments must drop the previously written disabled log tables separately to reclaim disk.