首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我如何理解为什么我的Flink TaskManager在我开始工作后不久就辞职了?

我如何理解为什么我的Flink TaskManager在我开始工作后不久就辞职了?
EN

Stack Overflow用户
提问于 2022-09-08 09:08:41
回答 2查看 86关注 0票数 1

我在会话模式中使用FLink1.15Docker图像,与撰写文件几乎一样。我有一个任务经理。在启动流作业几分钟后,我从job收到一条堆栈转储日志消息,该消息指出任务管理器已不可达,并且我看到我的容器已退出代码137 --这可能表示内存不足。尽管docker inspectOOMKilled标志显示为false,但表示其他问题。

“职务管理器”日志中的堆栈跟踪结束:

代码语言:javascript
运行
复制
Caused by: org.apache.flink.runtime.jobmaster.JobMasterException: TaskManager with id 172.18.0.5:44333-7c7193 is no longer reachable.

TaskManager码头日志在退出之前不会产生任何错误。如果我重新启用死任务管理器Docker容器,并查看/opt/flink/logs/中的日志文件,那么最后一条消息指出,我管道中的各个组件已经从初始化切换到运行。

如果我的状态变得太大,我就会期望任务管理器会产生内存堆栈转储。docker inspect还显示,由于内存不足,容器没有退出。

我不知道是什么导致我的任务经理死了。我有什么办法找出是什么引起了这个问题吗?(这发生在1.15.1和1.15.2。我没有使用过任何其他版本的Flink。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-09-28 09:09:34

最后,我没有比尝试和错误更复杂的方法来做各种不同的测试工作。我不能100%肯定我修复了这个问题,因为任务管理器在没有堆栈转储的情况下崩溃的问题是偶然发生的。然而,任务管理器已经有几天没有崩溃了。

重新创建我的问题的最简单的工作是,一个SourceFunction输出一个连续的增量Long流到一个DiscardingSink。有了这个设置,任务管理器就会在我的Linux机器上偶尔崩溃,但不会在我的Mac上崩溃。

如果我将一个Thread.sleep添加到SourceFunction的run循环中,那么最终会发生崩溃,但要花费更长的时间。

我尝试了Source框架,而不是SourceFunctionSingleThreadMultiplexSourceReaderBaseSplitReader上反复调用fetch来输出Long。自从我这样做之后,崩溃次数减少了,所以不能100%工作。

我猜想我的SourceFunction是在填充某种缓冲区或使任务时隙没有响应性,因为一旦它启动,它就不会放弃一个时隙。(或者其他完全不同的解释。)

我希望任务管理器给出一些为什么停止运行的指示。

票数 0
EN

Stack Overflow用户

发布于 2022-09-21 09:59:27

当任务管理器耗尽内存时,当GC花费了太多时间试图释放一些内存时,我就遇到了这个问题。

我知道您说过,docker检查并不显示它由于内存问题而关闭,但是仍然尝试使用更多的RAM或减少任务的内存需求,看看它是否仍然崩溃。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73646443

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档