rack - unicorn-worker-killer- 如果多个 Unicorn 工人同时被杀,为什么会有问题?
问题描述
从unicorn-worker-killer
READMEUnicorn::WorkerKiller::Oom
中,我在有关模块的注释中看到以下评论:
memory_limit_min 和 memory_limit_max 指定每个工作人员最大内存的最小值和最大值(以字节为单位)。实际限制由 rand() 在 memory_limit_min 和 memory_limit_max 之间决定每个工人,以防止所有工人同时死亡。
我的问题是:如果所有工人同时被杀,为什么会有问题?如果发生这种情况,最坏的情况和可能的情况是什么?
解决方案
Unicorn 中的每个工作进程都会同时处理一个请求。如果在收到新请求时所有工作人员都忙,主进程将排队,直到有工作人员有空处理它。
类似地,如果所有工作进程同时突然被杀死,任何新请求都将排队,直到至少有一个新工作进程重新启动。Unicorn 可以无缝地处理这种情况,但是 fork 一个新进程相对较慢,因此您应该尽可能避免出现这种情况。
推荐阅读
- python - 当 id 想输出“错误”或在这种情况下“超出范围”时,如何使标签消失
- python - 在特定位置安装 Anaconda
- java - 在android自定义适配器中将动态图像设置为ListView
- html - 侧边菜单问题 - 仅在 iPhone 5s 上
- git - Git Commit - 无响应的终端 Mac OS Catalina
- django - 无法将表单中的值添加到 Django 模型
- vue.js - 错误:已分配计算属性,但没有设置器
- flutter - 使用 2 formtextfield 抛出异常'
':不正确 - java - 在需要2个键作为输入的android中解析文本文件
- python - 使用 pandas 从 python csv 显示正确格式的问题