[改进] [API] 下载大型任务日志时,Apiserver 发生内存不足

作者: xmg333创建于 2026年8月3日更新于 2026年9月11日
标签improvementbackend

问前搜索

发生了什么事?

当用户下载了大型任务日志时, apiserver 可能会耗尽内存. 整个RPC响应机体同时被读入内存. 在我们的垃圾堆中,我们看到一个运输员Decoder ' 的身体'是~226MB的字节 ' ——这是一个快活任务 ' 反应。 在 3.3.2 上,解码器进行`新字节[bodyLength]'而不检查大小,因此,任何大响应都会得到完整的分配。

此外,一旦一个 " maxFrameSize " 警卫到位,一个大于框架限制的任务日志就不能再下载了——该日志作为一个大 " 字节[ ] " 在单一RPC中被退回,因此请求被拒绝。

{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你预期会发生什么

大型任务日志仍应可下载(被分块流出,而不是一个大的RPC),服务器不应该在大响应上OOM.

如何繁殖

  1. 执行生成大日志文件的任务。
  2. 点击"下载完整日志"或查看任务结果。 3.3.3.2 Apiserver OOMs; 有帧护卫,大log下载失败.

其它东西

OOM方面由MaxFrameSize ' 在TransporterDecoder'中检查处理。 这个问题还追踪了在这一限制下进行大日志下载的工作(将日志排入块中)。

翻译:

3.3.2 国家

你愿意提交公关吗?

  • 是的,我愿意提交公关!

行为守则

内容来源: apache/dolphinscheduler