bug: LANGFUSE_S3_CONCURRENT_WRITES and LANGFUSE_S3_CONCURRENT_READS not applied as expected

这个报错通常出现在自托管 Langfuse 并写入/读取大量 traces/spans 时,即使把 LANGFUSE_S3_CONCURRENT_WRITES 和 LANGFUSE_S3_CONCURRENT_READS 调高,仍会看到 @smithy/node-http-handler 的 soc

快速结论:这个报错通常出现在自托管 Langfuse 并写入/读取大量 traces/spans 时,即使把 LANGFUSE_S3_CONCURRENT_WRITES 和 LANGFUSE_S3_CONCURRENT_READS 调高,仍会看到 @smithy/node-http-handler 的 socket acquisition 警告。优先排查环境变量是否真正传入运行中的容器、部署配置是否被覆盖或写错,并确认 SDK 对 maxSockets 的支持情况。

适用环境:Langfuse 3.97.2,自托管(self-hosted)部署在云服务器上;Issue 未确认具体操作系统、Python、CUDA、显卡或依赖版本。

最快修复方案:暂无确认的一步修复方案。Issue 中明确的结论是 LANGFUSE_S3_CONCURRENT_WRITES 在代码里会被读取并用于设置 S3 客户端的 maxSockets,但 LANGFUSE_S3_CONCURRENT_READS 未被应用于 S3 客户端配置,因此单独调大 LANGFUSE_S3_CONCURRENT_READS 不会生效,除非代码更新。

注意事项:目前没有已知的、经 Issue 验证可彻底消除警告的配置。调高 LANGFUSE_S3_CONCURRENT_WRITES 在理论上应增加允许的并发 S3 连接数,但若变量未正确传入、被部署配置覆盖、拼写有误,或与当前 AWS SDK 版本不兼容,仍可能出现 socket 警告。需要自行确认运行时实际生效的值。

问题场景

用户在自托管 Langfuse 环境中,向实例发送大量 traces/spans 时触发该问题。用户已经在环境变量中设置了较高的 LANGFUSE_S3_CONCURRENT_WRITES 和 LANGFUSE_S3_CONCURRENT_READS,但 pod 日志中仍持续出现 @smithy/node-http-handler 的 socket acquisition 警告。用户怀疑这些环境变量没有被 S3 客户端正确读取。

报错原文

bug: LANGFUSE_S3_CONCURRENT_WRITES and LANGFUSE_S3_CONCURRENT_READS not applied as expected

... @smithy/node-http-handler warnings ...

原因分析

根据 Issue 讨论中的分析:

  • LANGFUSE_S3_CONCURRENT_WRITES 确实会从环境变量中加载,并用于为 S3 客户端设置 maxSockets,因此在代码层面调高该值应增加允许的并发 S3 连接数。
  • LANGFUSE_S3_CONCURRENT_READS 似乎没有被用于 S3 客户端配置,所以单独调高它对读操作没有效果,除非代码更新以将该变量应用于读操作。
  • 如果已经在 LANGFUSE_S3_CONCURRENT_WRITES 设置很高的情况下仍看到 socket acquisition 警告,可能原因包括:环境变量未在容器中设置或未正确传播;部署配置中存在拼写错误或覆盖;或者与使用的 AWS SDK 版本不兼容。

环境排查

  • 确认 Langfuse 版本:Issue 中为 3.97.2。
  • 确认 LANGFUSE_S3_CONCURRENT_WRITES 是否在运行中的容器内实际生效,可在容器内执行 env 查看,或在 S3 客户端构造处打印该值。
  • 检查部署配置中是否存在拼写错误或对同名环境变量的覆盖。
  • 确认当前使用的 AWS SDK 版本是否支持 maxSockets 选项。
  • 确认 LANGFUSE_S3_CONCURRENT_READS 在当前版本中是否已被应用于 S3 客户端配置(根据讨论,尚未应用)。

解决步骤

  1. 进入运行中的 Langfuse 容器,执行 env 或等效命令,确认 LANGFUSE_S3_CONCURRENT_WRITES 的实际值是否符合预期。
  2. 检查部署文件(如 Docker Compose、Kubernetes manifest、Helm values 等)中该环境变量的拼写,确认没有被其他配置覆盖。
  3. 在 S3 客户端构造处增加日志,打印实际传入的 maxSockets 值,确认运行时真正使用的值。
  4. 如果确认 LANGFUSE_S3_CONCURRENT_WRITES 已正确传入且 SDK 兼容,但警告仍存在,可关注后续版本是否更新了 LANGFUSE_S3_CONCURRENT_READS 的应用逻辑。
  5. 如果排查后仍无法解决,建议在 Issue 中补充运行时环境与 SDK 版本的详细信息以便进一步分析。

验证方法

在调整环境变量并确认其在容器内生效后,重新向 Langfuse 发送较大量的 traces/spans,观察 pod 日志中 @smithy/node-http-handler 的 socket acquisition 警告是否减少或消失。同时确认 S3 客户端构造时打印的 maxSockets 值与预期一致。

参考来源

langfuse/langfuse #8530

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 28940

发表回复

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