chore(hosting): trim clickhouse config comments

Rationale for the config belongs in the PR, not the artifact. The one claim kept was also inaccurate: processors_profile_log and asynchronous_insert_log already ship TTLs in the pinned image, so the tables are not all unbounded.

Drops the .server-changes entry: hosting-only changes are not covered by the webapp/supervisor areas, and a docker vs helm split is a separate discussion.
This commit is contained in:
nicktrn
2026-08-24 11:15:24 +01:00
parent 8833ebbe39
commit 371a0a82b6
3 changed files with 4 additions and 27 deletions
@@ -1,6 +0,0 @@
---
area: hosting
type: fix
---
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.
+3 -14
View File
@@ -10,14 +10,7 @@
<mark_cache_size>524288000</mark_cache_size> <!-- 500MB -->
<concurrent_threads_soft_limit_num>1</concurrent_threads_soft_limit_num>
<!-- ClickHouse's own telemetry tables have no TTL and grow without bound; on the
recommended webapp machine size their background merges eventually stop fitting
in memory and are retried forever (there is no backoff for failed merges),
pinning the CPU and ultimately failing the webapp's own inserts (#4343).
The ClickHouse low-RAM guide recommends disabling exactly these tables:
https://clickhouse.com/docs/operations/tips
Same list as the dev stack (docker/config/clickhouse-disable-system-logs.xml),
extended with the newer log tables. -->
<!-- ClickHouse's own telemetry, too heavy for the recommended machine size -->
<metric_log remove="1"/>
<asynchronous_metric_log remove="1"/>
<part_log remove="1"/>
@@ -34,10 +27,7 @@
<opentelemetry_span_log remove="1"/>
<query_views_log remove="1"/>
<!-- Keep query_log and error_log (small and useful for debugging), but bounded.
A config-level TTL survives log-table recreation, unlike ALTER ... MODIFY TTL.
Note: ClickHouse renames the existing table to *_log_<N> when this changes;
drop those leftovers to reclaim disk. -->
<!-- A config-level ttl survives log-table recreation, unlike ALTER ... MODIFY TTL -->
<query_log>
<ttl>event_date + INTERVAL 7 DAY DELETE</ttl>
</query_log>
@@ -45,6 +35,5 @@
<ttl>event_date + INTERVAL 30 DAY DELETE</ttl>
</error_log>
<!-- Profile settings do NOT live here: config.d is silently ignored for them.
See users-override.xml, mounted under users.d. -->
<!-- Profile settings only apply from users.d, see users-override.xml -->
</clickhouse>
+1 -7
View File
@@ -1,17 +1,11 @@
<clickhouse>
<profiles>
<default>
<!-- Low-memory settings for the recommended webapp machine size. These were
previously in config.d/override.xml where profile settings are silently
ignored — they only take effect from the users config tree (#4343). -->
<max_block_size>8192</max_block_size>
<max_download_threads>1</max_download_threads>
<input_format_parallel_parsing>0</input_format_parallel_parsing>
<output_format_parallel_formatting>0</output_format_parallel_formatting>
<!-- The memory/query profilers sample stacks into system.trace_log
(a Memory/MemoryPeak sample every 4 MB allocated, by default) — the main
firehose that fills it. trace_log is disabled in override.xml; turn the
samplers off too so they don't burn CPU producing discarded rows. -->
<!-- Samplers only feed trace_log, which is disabled -->
<memory_profiler_step>0</memory_profiler_step>
<memory_profiler_sample_probability>0</memory_profiler_sample_probability>
<query_profiler_real_time_period_ns>0</query_profiler_real_time_period_ns>