LangSmith 自托管允许启用跟踪的自动 TTL 和数据保留。如果您遵守数据隐私法规,或者如果您想要更高效的空间使用和跟踪的自动清理,这会很有用。跟踪的数据保留期也将根据某些操作或运行规则应用自动延长。
您可以通过 helm 或环境变量设置配置保留。有几个可配置的选项:
- *启用:*数据保留是启用还是禁用。如果启用,通过 UI 您可以将默认组织和项目 TTL 层应用于跟踪(有关详细信息,请参阅数据保留指南)。
- *保留期:*您可以为短期和长期跟踪配置系统范围的保留期。配置后,您可以在每个项目管理保留级别,并为新项目设置组织范围的默认值。
config:
ttl:
enabled: true
ttl_period_seconds:
# -- 400 day longlived and 14 day shortlived
longlived: "34560000"
shortlived: "1209600"
ClickHouse TTL 清理作业
从版本 0.11 开始,一个 cron 作业在周末运行以协助删除可能未被 ClickHouse 内置 TTL 机制清理的过期数据。
此作业使用可能长时间运行的突变(ALTER TABLE DELETE),这是可能影响 ClickHouse 性能的昂贵操作。我们建议仅在非高峰时段(夜间和周末)运行这些操作。在使用 1 个并发活动突变(默认)进行测试期间,我们没有观察到显著的 CPU、内存或延迟增加。
默认计划
默认情况下,清理作业运行时间:
- 星期六:UTC 时间晚上 8 点和 10 点
- 星期日:UTC 时间凌晨 12 点、2 点和 4 点
禁用作业
要完全禁用清理作业:
queue:
deployment:
extraEnv:
- name: "ENABLE_CLICKHOUSE_TTL_CLEANUP_CRON"
value: "false"
配置计划
您可以通过修改 cron 表达式来自定义清理作业的运行时间:
queue:
deployment:
extraEnv:
# UTC:星期日凌晨 12 点/2 点/4 点
- name: "CLICKHOUSE_TTL_CLEANUP_CRON_WEEKEND_MORNING"
value: "0 0,2,4 * * 0"
# UTC:星期六晚上 8 点/10 点
- name: "CLICKHOUSE_TTL_CLEANUP_CRON_WEEKEND_EVENING"
value: "0 20,22 * * 6"
要在单个 cron 计划上运行作业,请将 CLICKHOUSE_TTL_CLEANUP_CRON_WEEKEND_EVENING 和 CLICKHOUSE_TTL_CLEANUP_CRON_WEEKEND_MORNING 设置为相同的值。作业锁定可防止重叠执行。
配置每个部分的最小过期行数
该作业逐表进行,扫描部分并从包含最小数量过期行的部分中删除数据。此阈值平衡了效率和彻底性:
- 太低:作业扫描整个部分以清除最少的数据(效率低下)
- 太高:作业会错过包含大量过期数据的部分
queue:
deployment:
extraEnv:
- name: "CLICKHOUSE_TTL_CRON_MIN_EXPIRED_ROWS_PER_PART"
value: "100000" # 100k 过期行
检查过期行
使用此查询分析表中的过期行,并相应地调整您的最小值:
-- Runs 表的查询。对于其他表,将 'ttl_seconds' 替换为 'trace_ttl_seconds'
SELECT
_part,
count() AS expired_rows
FROM runs
WHERE trace_first_received_at IS NOT NULL
AND ttl_seconds IS NOT NULL
AND toDateTime(assumeNotNull(trace_first_received_at) + toIntervalSecond(assumeNotNull(ttl_seconds))) < now()
GROUP BY _part
ORDER BY expired_rows DESC
配置最大活动突变数
删除操作可能很耗时(100GB 部分约 50 分钟)。您可以增加并发突变以加快该过程:
queue:
deployment:
extraEnv:
- name: "CLICKHOUSE_TTL_CRON_MAX_ACTIVE_MUTATIONS"
value: "1"
增加并发 DELETE 操作可能会严重影响系统性能。仔细监控您的系统,仅在您能够容忍可能更慢的插入和读取延迟时才增加此值。
紧急情况:停止运行中的突变
如果您遇到延迟峰值并需要终止正在运行的突变:
-
查找活动突变:
SELECT * FROM system.mutations WHERE is_done = 0;
查找 command 列包含 DELETE 语句的 mutation_id。
-
终止突变:
KILL MUTATION WHERE mutation_id = '<mutation_id>';
备份和数据保留
如果运行此作业后磁盘空间没有减少,或者它继续增加,备份可能会通过创建文件系统硬链接而导致问题。这些链接会阻止 ClickHouse 清理数据。
要验证,请检查 ClickHouse pod 内的以下目录:
/var/lib/clickhouse/backup
/var/lib/clickhouse/shadow
如果存在备份,请将它们复制到外部文件系统或 blob 存储(例如 S3),然后清除目录。几分钟内,您将注意到磁盘空间被释放。