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_EVENINGCLICKHOUSE_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 操作可能会严重影响系统性能。仔细监控您的系统,仅在您能够容忍可能更慢的插入和读取延迟时才增加此值。

紧急情况:停止运行中的突变

如果您遇到延迟峰值并需要终止正在运行的突变:
  1. 查找活动突变
    SELECT * FROM system.mutations WHERE is_done = 0;
    
    查找 command 列包含 DELETE 语句的 mutation_id
  2. 终止突变
    KILL MUTATION WHERE mutation_id = '<mutation_id>';
    

备份和数据保留

如果运行此作业后磁盘空间没有减少,或者它继续增加,备份可能会通过创建文件系统硬链接而导致问题。这些链接会阻止 ClickHouse 清理数据。 要验证,请检查 ClickHouse pod 内的以下目录:
  • /var/lib/clickhouse/backup
  • /var/lib/clickhouse/shadow
如果存在备份,请将它们复制到外部文件系统或 blob 存储(例如 S3),然后清除目录。几分钟内,您将注意到磁盘空间被释放。
Connect these docs programmatically to Claude, VSCode, and more via MCP for real-time answers.