[改进] [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.
如何繁殖
- 执行生成大日志文件的任务。
- 点击"下载完整日志"或查看任务结果。 3.3.3.2 Apiserver OOMs; 有帧护卫,大log下载失败.
其它东西
OOM方面由MaxFrameSize ' 在TransporterDecoder'中检查处理。 这个问题还追踪了在这一限制下进行大日志下载的工作(将日志排入块中)。
翻译:
3.3.2 国家
你愿意提交公关吗?
- 是的,我愿意提交公关!
行为守则
- 我同意遵守该项目的行为守则
内容来源: apache/dolphinscheduler