【问题标题】:Gunicorn worker terminated with signal 9Gunicorn 工人以信号 9 终止
【发布时间】:2021-08-10 16:32:08
【问题描述】:

我正在运行一个 Flask 应用程序并将其从 Docker 容器托管在 Kubernetes 上。 Gunicorn 正在管理回复 API 请求的工作人员。

以下警告消息经常出现,并且似乎由于某种原因正在取消请求。在 Kubernetes 上,Pod 没有显示异常行为或重新启动,并且保持在其内存和 CPU 限制的 80% 以内。

[2021-03-31 16:30:31 +0200] [1] [WARNING] Worker with pid 26 was terminated due to signal 9

我们如何找出这些工人被杀的原因?

【问题讨论】:

  • 您找到原因了吗?遇到同样的问题,并尝试指定 --shm-size - 但无济于事。
  • 自从我们开始使用--worker-class gevent 以来,我们的问题似乎已经消失了。我怀疑 Simon 是对的,这要么是内存不足错误,要么是后台进程运行时间过长,主进程 (1) 决定终止它。
  • Meta:我不知道为什么这个问题被否决了。如果您认为需要进一步澄清,请发表评论。
  • 我也有同样的问题,gevent没有解决。有谁知道为什么会突然开始? gunicorn 或 kube 有变化吗?
  • 也与未回答的问题有关:stackoverflow.com/questions/57745100/…

标签: python flask gunicorn


【解决方案1】:

我遇到了同样的警告信息。

[WARNING] Worker with pid 71 was terminated due to signal 9

我遇到了这个faq,它说“SIGKILL 的常见原因是 OOM 杀手由于内存不足而终止进程。”

我用dmesg发现确实是因为内存不足而被杀死了。

Out of memory: Killed process 776660 (gunicorn)

【讨论】:

  • 自从我们开始使用--worker-class gevent 以来,我们的问题似乎已经消失了。我无法验证这个答案,但似乎dmesg 是获取更多信息和诊断问题的好方法。感谢您的回答!
【解决方案2】:

在我的情况下,问题是由于 ml 模型预热(超过 3 秒)导致应用程序启动时间过长

【讨论】:

  • 你是怎么解决的?
  • 摆脱了热身。正在寻找在应用启动后立即执行此操作的方法。
猜你喜欢
  • 2018-02-25
  • 2018-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-19
  • 2014-05-13
  • 1970-01-01
相关资源
最近更新 更多