跳到主要内容
本指南将引导您解决在运行 LangSmith 自托管实例时可能遇到的常见问题。 在运行 LangSmith 时,您可能会遇到意外的 500 错误、性能缓慢或其他问题。本指南将帮助您诊断和解决这些问题。

获取有用信息

要诊断和解决问题,您首先需要检索一些相关信息。以下部分解释了如何为 Kubernetes 或 Docker 设置以及如何拉取有用的浏览器信息。 通常,您需要分析的主要服务是:
  • langsmith-backend:处理 CRUD API 请求、业务逻辑、来自前端和 SDK 的请求、用于摄取的跟踪准备以及 Hub API。
  • langsmith-platform-backend:处理身份验证、运行摄取和其他大批量任务。
  • langsmith-queue:处理传入的跟踪和反馈、异步摄取和持久化到数据存储、数据完整性检查以及数据库错误或连接问题期间的重试。
有关这些服务的更多详细信息,请参阅架构概述

Kubernetes

故障排除的第一步是收集有关 LangSmith 部署的重要调试信息。服务日志、kubernetes 事件和容器的资源利用率可以帮助确定问题的根本原因。 您可以运行我们的k8s 故障排除脚本,它将拉取所有相关的 kubernetes 信息并将其输出到一个文件夹中进行调查。该脚本还会将此文件夹压缩成一个 zip 文件以供共享。以下是运行此脚本的示例,假设您的 langsmith 部署是在 langsmith 命名空间中启动的:
bash get_k8s_debugging_info.sh --namespace langsmith
然后您可以检查生成的文件夹的内容,查找任何相关的错误或信息。如果您希望 LangSmith 团队协助调试,请将此 zip 文件分享给团队。

Docker

如果在 Docker 上运行,您可以通过运行以下命令检查部署日志
docker compose logs >> logs.txt

浏览器错误

如果您遇到浏览器错误,检查 HAR 文件也可能有所帮助,其中可能包含关键信息。要获取 HAR 文件,您可以按照本指南,其中解释了各种浏览器的简短过程。 然后,您可以使用Google 的 HAR 分析器进行调查。您也可以将您的 HAR 文件发送给 LangSmith 团队以协助调试。

常见问题

DB::Exception: 无法预留 1.00 MiB,空间不足:执行 WaitForAsyncInsert 时。(NOT_ENOUGH_SPACE)

当 ClickHouse 磁盘空间不足时,会发生此错误。您需要增加 ClickHouse 可用的磁盘空间。

Kubernetes

在 Kubernetes 中,您需要增加 ClickHouse PVC 的大小。为此,您可以执行以下步骤:
  1. 获取 PVC 的存储类:kubectl get pvc data-langsmith-clickhouse-0 -n -o jsonpath='{.spec.storageClassName}'
  2. 确保存储类具有 AllowVolumeExpansion: true:kubectl get sc -o jsonpath='{.allowVolumeExpansion}'
    • 如果为 false,某些存储类可以更新以允许卷扩展。
    • 要更新存储类,您可以运行 kubectl patch sc -p '{"allowVolumeExpansion": true}'
    • 如果失败,您可能需要创建具有正确设置的新存储类。
  3. 编辑您的 pvc 以获得新大小:kubectl edit pvc data-langsmith-clickhouse-0 -n kubectl patch pvc data-langsmith-clickhouse-0 '{"spec":{"resources":{"requests":{"storage":"100Gi"}}}}' -n
  4. 将您的 helm chart langsmith_config.yaml 更新为新大小(例如 100 Gi
  5. 删除 clickhouse 有状态集 kubectl delete statefulset langsmith-clickhouse --cascade=orphan -n
  6. 应用更新大小的 helm chart(您可以按照此处的升级指南进行操作)
  7. 您的 pvc 现在应该具有新大小。通过运行 kubectl get pvckubectl exec langsmith-clickhouse-0 -- bash -c "df" 进行验证

Docker

在 Docker 中,您需要增加 ClickHouse 卷的大小。为此,您可以执行以下步骤:
  1. 停止您的 LangSmith 实例。docker compose down
  2. 如果使用绑定挂载,您需要增加挂载点的大小。
  3. 如果使用 docker volume,您需要为卷/docker 分配更多空间。

错误:数据库版本“version”不干净。修复并强制更新版本

当 ClickHouse 数据库与我们的迁移处于不一致状态时,会发生此错误。您需要重置到较早的数据库版本,然后重新运行升级/迁移。

Kubernetes

  1. 强制迁移到较早版本,其中 version = 脏版本 - 1。
kubectl exec -it deployments/langsmith-backend -- bash -c 'migrate -source "file://clickhouse/migrations" -database "clickhouse://$CLICKHOUSE_HOST:$CLICKHOUSE_NATIVE_PORT?username=$CLICKHOUSE_USER&password=$CLICKHOUSE_PASSWORD&database=$CLICKHOUSE_DB&x-multi-statement=true&x-migrations-table-engine=MergeTree&secure=$CLICKHOUSE_TLS" force <version>'
  1. 重新运行您的升级/迁移。

Docker

  1. 强制迁移到较早版本,其中 version = 脏版本 - 1。
docker compose exec langchain-backend migrate -source "file://clickhouse/migrations" -database "clickhouse://$CLICKHOUSE_HOST:$CLICKHOUSE_NATIVE_PORT?username=$CLICKHOUSE_USER&password=$CLICKHOUSE_PASSWORD&database=$CLICKHOUSE_DB&x-multi-statement=true&x-migrations-table-engine=MergeTree&secure=$CLICKHOUSE_TLS" force <version>
  1. 重新运行您的升级/迁移。

413 - 请求实体过大

当请求大小超过允许的最大大小时,会发生此错误。您需要增加 Nginx 配置中的最大请求大小。

Kubernetes

  1. 编辑您的 langsmith_config.yaml 并增加 frontend.maxBodySize。这可能看起来像这样:
frontend:
  maxBodySize: "100M"
  1. 将您的更改应用到集群。

详情:代码:497,消息:默认:权限不足。执行此查询需要拥有 default.feedbacks_rmt 上的 CREATE ROW POLICY 权限

当您的用户没有在 Clickhouse 中创建行策略所需的权限时,会发生此错误。部署 Docker 部署时,您还需要从 github 仓库复制 users.xml 文件。这会将 标签添加到 users.xml 文件中,这允许用户创建行策略。以下是我们期望使用的默认 users.xml 文件。
<clickhouse>
    <users>
        <default>
            <access_management>1</access_management>
            <named_collection_control>1</named_collection_control>
            <show_named_collections>1</show_named_collections>
            <show_named_collections_secrets>1</show_named_collections_secrets>
            <profile>default</profile>
        </default>
    </users>
    <profiles>
        <default>
            <async_insert>1</async_insert>
            <async_insert_max_data_size>2000000</async_insert_max_data_size>
            <wait_for_async_insert>0</wait_for_async_insert>
            <parallel_view_processing>1</parallel_view_processing>
            <allow_simdjson>0</allow_simdjson>
            <lightweight_deletes_sync>0</lightweight_deletes_sync>
        </default>
    </profiles>
</clickhouse>
在某些环境中,您的挂载点可能无法由容器写入。在这些情况下,我们建议构建一个包含 users.xml 文件的自定义镜像。 示例 Dockerfile
FROM clickhouse/clickhouse-server:24.8
COPY ./users.xml /etc/clickhouse-server/users.d/users.xml
然后执行以下步骤:
  1. 构建您的自定义镜像。
docker build -t <image-name> .
  1. 更新您的 docker-compose.yaml 以使用自定义镜像。请务必删除 users.xml 挂载点。
langchain-clickhouse:
  image: <image-name>
  1. 重启您的 LangSmith 实例。
docker compose down --volumes
docker compose up

使用 AquaSec 运行集群时 ClickHouse 无法启动

在某些环境中,AquaSec 可能会阻止 ClickHouse 正确启动。这可能表现为 ClickHouse pod 不发出任何日志并未能被标记为就绪。通常这是由于 AquaSec 设置了 LD_PRELOAD,它干扰了 ClickHouse。要解决此问题,您可以将以下环境变量添加到 ClickHouse 部署中

Kubernetes

编辑您的 langsmith_config.yaml(或相应的配置文件)并设置 AQUA_SKIP_LD_PRELOAD 环境变量
clickhouse:
  statefulSet:
    extraEnv:
      - name: AQUA_SKIP_LD_PRELOAD
        value: "true"

Docker

编辑您的 docker-compose.yaml 并设置 AQUA_SKIP_LD_PRELOAD 环境变量
langchain-clickhouse:
  environment:
    - AQUA_SKIP_LD_PRELOAD=true

以编程方式连接这些文档到 Claude、VSCode 等,通过 MCP 获取实时答案。
© . This site is unofficial and not affiliated with LangChain, Inc.