0

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

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

我试图 KILL 任务,但它的状态永远不会更新为 KILLED 而 Chronos 中的日志说成功收到了请求。我已经在 Chronos 中检查它确实将任务更新为成功并且结束时间也是正确的,但持续时间正在进行中并且任务仍处于 RUNNING 状态。

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

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

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

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

如何在不重新启动 Mesos 代理的情况下从活动任务中移除这个卡住的任务?有没有办法防止这个问题发生?

4

1 回答 1

1

目前,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 版本后,不再出现这种情况。

于 2021-02-23T04:41:08.620 回答