Apache Mesos/Chronos 任务状态未更新并卡在 运行 状态

Apache Mesos/Chronos task status is not getting updated and stuck as RUNNING status

我在本地使用 Mesos 1.3.1 和 Chronos。我目前每 30 分钟安排 100 个作业进行测试。

有时任务会永远卡在 运行 状态,直到我重新启动任务卡住的 Mesos 代理。在此期间没有代理重新启动。

我曾尝试终止该任务,但其状态从未更新为 KILLED,而 Chronos 中的日志显示已成功收到请求。我在 Chronos 中检查过它确实将任务更新为成功并且结束时间也是正确的但是持续时间正在进行并且任务仍处于 运行 状态。

此外,执行器容器 运行 永远为卡住的任务服务。我有一个执行程序容器,它将休眠 20 秒并将 offer_timeout 设置为 30 秒,将 executor_registration_timeout 设置为 2 分钟。

我还包括每 10 分钟一次的 Mesos 协调,但它每次都会将任务更新为 运行。

我也曾尝试强制任务状态在协调之前再次更新为已完成,但仍然没有更新为已完成。 似乎 Mesos 领导者没有为卡住的任务选择正确的状态。

我已经尝试 运行 使用不同的任务资源分配(cpu:0.5,0.75,1...),但没有解决问题。我将作业数量更改为每 30 分钟 70 个,但仍在发生。这个问题每天出现一次,非常随机,任何工作都可能发生。

如何在不重启 Mesos 代理的情况下从活动任务中删除这个卡住的任务? 有什么办法可以防止这个问题发生吗?

目前 Linux 中的 Docker 中存在一个已知问题,进程已退出,但 docker 容器仍在 运行。 https://github.com/docker/for-linux/issues/779

因此,执行器容器卡在 运行 状态,Mesos 无法更新任务状态。

我的问题与此类似:https://issues.apache.org/jira/browse/MESOS-9501?focusedCommentId=16806707&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-16806707

在 1.4.3 版本之后应用了解决方法。升级 Mesos 版本后,不再出现这种情况。