我如何找到马拉松失控过程

How do I find a marathon runaway process

我有一个 mesos / marathon 系统,大部分情况下运行良好。有超过 20 个进程 运行,其中大多数只使用 CPU 的一部分。然而,有时(尤其是在开发期间),进程会启动并开始使用尽可能多的 CPU。我可以在我的系统监视器上看到有一个固定的 CPU,但我无法确定是哪个马拉松过程导致了它。

是否有监控应用显示 CPU 马拉松作业的使用情况?随着时间的推移显示它的东西。这也有助于理解缩放和 CPU 要求。跟踪内存使用情况会很好,但仅次于 CPU.

您的代理(从)节点似乎没有配置任何隔离机制。 mesos-slave 带有默认为 posix/cpu,posix/mem--isolation 标志。这意味着进程级别的隔离(几乎完全没有隔离)。使用 cgroups/cpu,cgroups/mem 隔离将确保给定任务在超过给定内存限制时将被内核终止。内存是一个可以轻松执行的硬约束。

限制 CPU 比较复杂。如果您的机器为 Mesos 提供 8 CPU 个内核,并且您的每个任务都设置为需要 cpu=2.0,那么您最多可以 运行 执行 4 个任务。这很简单,但在给定时刻,您的 4 个任务中的任何一个都可能能够利用所有空闲核心。如果您的某些作业出现异常,可能会影响同一台机器上的其他作业 运行ning。有关限制 CPU 利用率的详细信息,请参阅 Completely Fair Scheduler (or related question

关于监控,有多种可能性,请选择适合您要求的选项。您可以组合许多解决方案,一些是开源的其他企业级解决方案(顺序随机):