gpt4 book ai didi

python - unicorn worker 被杀

转载 作者:行者123 更新时间:2023-12-03 17:00:07 28 4
gpt4 key购买 nike

我正在使用 gunicorn 运行 flask 应用程序(rest api),我几乎每 30 秒就会看到一批 [CRITICAL] WORKER TIMEOUT (pid:14727) .
我的设置如下:

gunicorn --worker-class gevent \
--timeout 30 --graceful-timeout 20
--max-requests-jitter 2000 --max-requests 1500
-w 50
--log-level DEBUG --capture-output
--bind 0.0.0.0:5000 run:app

我看到之前的帖子说要为此投入更多的内存,但从它的外观来看:
$ ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 513926
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 131071
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 1550298
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited

堆是无限的,堆栈大小略高于 8Mb。

日志样本
+0000] [26657] [DEBUG] GET /timer
[2017-01-21 14:07:30 +0000] [26657] [DEBUG] GET /timer
[2017-01-21 14:07:33 +0000] [26657] [DEBUG] GET /timer
[2017-01-21 14:07:33 +0000] [26652] [DEBUG] GET /timer
10.193.80.149 - - [21/Jan/2017:14:07:34 +0000] "GET /timer?id=699ec59eccd3fb929b3dd7707e542ed15acd4181:6f136b54-2cb5-42ef-9def-f69caaba57ef HTTP/1.1" 200 - "-" "-"
10.193.80.147 - - [21/Jan/2017:14:07:35 +0000] "GET /timer?id=e7963c53603ed9249b0aa557d8a64cea89fb0bf4:6f136b54-2cb5-42ef-9def-f69caaba57ef HTTP/1.1" 200 - "-" "-"
10.193.80.150 - - [21/Jan/2017:14:07:35 +0000] "GET /timer?id=4b750805193fb4d00c3ce1465c266ed932a24e55:6f136b54-2cb5-42ef-9def-f69caaba57ef HTTP/1.1" 200 - "-" "-"
[2017-01-21 14:07:37 +0000] [26657] [DEBUG] GET /timer
[2017-01-21 14:07:37 +0000] [26657] [DEBUG] GET /timer
[2017-01-21 14:07:37 +0000] [26635] [CRITICAL] WORKER TIMEOUT (pid:27202)
[2017-01-21 14:07:37 +0000] [26635] [CRITICAL] WORKER TIMEOUT (pid:27205)

我注意到只有少数 worker 一直在做这项工作 26657 , 26652 26651其他一切似乎都在给我 Worker timeout

最佳答案

您有一些请求需要超过 30 秒才能完成,这就是它们被杀死的原因。任何一个:

  • 调整您的代码,使每个请求在 30 秒内完成(这也可能是由于数据库速度慢或其他依赖关系)
  • 检查您的主机是否缺乏资源,这可能是由于 CPU 或 RAM。只有在每个 unicorn 进程都消耗大量 RAM 并且机器开始交换时,通过将更多 RAM 放入机器来调整机器才会有帮助。尝试例如top检查 CPU 或 RAM 是否饱和。
  • 通过更改 --timeout 30 来增加超时到更高的数字。这确实是最糟糕的想法,因为您没有解决 flask 应用程序对传入请求响应缓慢的潜在问题。加上杀死长时间运行的请求通常有助于其他 flask 线程也不会遇到资源问题。
  • 关于python - unicorn worker 被杀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41779996/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com