首页 > 解决方案 > unicorn-worker-killer- 如果多个 Unicorn 工人同时被杀,为什么会有问题?

问题描述

unicorn-worker-killer READMEUnicorn::WorkerKiller::Oom中,我在有关模块的注释中看到以下评论:

memory_limit_min 和 memory_limit_max 指定每个工作人员最大内存的最小值和最大值(以字节为单位)。实际限制由 rand() 在 memory_limit_min 和 memory_limit_max 之间决定每个工人,以防止所有工人同时死亡。

我的问题是:如果所有工人同时被杀,为什么会有问题?如果发生这种情况,最坏的情况和可能的情况是什么?

标签: rackunicorn

解决方案


Unicorn 中的每个工作进程都会同时处理一个请求。如果在收到新请求时所有工作人员都忙,主进程将排队,直到有工作人员有空处理它。

类似地,如果所有工作进程同时突然被杀死,任何新请求都将排队,直到至少有一个新工作进程重新启动。Unicorn 可以无缝地处理这种情况,但是 fork 一个新进程相对较慢,因此您应该尽可能避免出现这种情况。


推荐阅读