bug: ClickHouse system tables grow unbounded in default docker-compose deployment

这个报错发生在自托管 Langfuse 使用默认 docker-compose.yml 部署时,ClickHouse 因为缺少自定义配置而“裸跑”,默认开启的查询性能分析器会不断向 system.trace_log 写入堆栈采样数据,且系统日志表没有配置 TTL,最终导致 ClickHouse 系统

快速结论:这个报错发生在自托管 Langfuse 使用默认 docker-compose.yml 部署时,ClickHouse 因为缺少自定义配置而“裸跑”,默认开启的查询性能分析器会不断向 system.trace_log 写入堆栈采样数据,且系统日志表没有配置 TTL,最终导致 ClickHouse 系统表占用磁盘比业务数据还大。优先排查 system.trace_log 大小,并挂载自定义配置禁用性能分析器、给系统日志表加 TTL。

适用环境:自托管 Langfuse(latest),默认 docker-compose.yml,ClickHouse 镜像 docker.io/clickhouse/clickhouse-server,未挂载任何自定义 ClickHouse 配置。Issue 未涉及 Python、CUDA、显卡或特定 CPU 架构信息。

最快修复方案:创建自定义 ClickHouse 配置文件,挂载到 /etc/clickhouse-server/config.d/,禁用查询性能分析器并为 system.trace_logsystem.query_logsystem.opentelemetry_span_log 添加 TTL;然后手动执行 TRUNCATE TABLE system.trace_logTRUNCATE TABLE system.opentelemetry_span_log 清理已有数据。

注意事项:这是社区确认可行的 workaround,不是 Langfuse 官方默认配置的最终修复;Issue 关闭时官方尚未把最小化 ClickHouse 配置合入默认 docker-compose.yml。清理前建议确认 ClickHouse 数据卷已备份,避免误删其他系统表数据。

问题场景

用户在自托管 Langfuse 时使用仓库自带的默认 docker-compose.yml 启动服务,ClickHouse 以完全默认的配置运行。随着持续向 Langfuse 发送 traces,ClickHouse 的数据卷磁盘占用不断膨胀。用户用 system.parts 查询后发现问题:system.trace_log 单表占用 66.86 GiB,而所有 Langfuse 业务数据(traces / observations / scores)加起来只有几十 MiB,系统表喧宾夺主。

报错原文

bug: ClickHouse system tables grow unbounded in default docker-compose deployment

原因分析

根本原因是默认 docker-compose.yml 没有挂载任何 ClickHouse 自定义配置,ClickHouse 因此开启全部默认行为:

celebrityanime
celebrityanime
文章: 16460

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注