【问题标题】:Flask via uWSGI on Nginx and worker killed by signal 9通过 Nginx 上的 uWSGI 烧瓶和被信号 9 杀死的工人
【发布时间】:2021-10-08 11:09:48
【问题描述】:

由于某种原因,当我的 Flas 应用程序部署到 Docker 时,它会因多个请求而崩溃并出现错误

nginx    | 2020/06/26 20:41:39 [error] 20#20: *1 upstream prematurely closed connection while reading response header from upstream, client: 172.18.0.1, server: , request: "POST /api/v1.0/export HTTP/1.1", upstream: "uwsgi://172.18.0.2:5555", host: "127.0.0.1:80"
flask    | DAMN ! worker 4 (pid: 16) died, killed by signal 9 :( trying respawn ...
flask    | Respawned uWSGI worker 4 (new pid: 18)

应用在venv上运行时运行良好

uWSGI 配置如下:

[uwsgi]
wsgi-file = run.py
callable = app
socket = :5555
processes = 16
threads = 2
master = true
chmod-socket = 660
vacuum = true
die-on-term = true
harakiri-verbose = true

和 nginx 配置看起来像:

server {

    listen 80;

    location / {
        include uwsgi_params;
        uwsgi_pass flask:5555;
        uwsgi_read_timeout 300;
    }

    client_max_body_size 100M;

    client_header_timeout       120s;
    client_body_timeout         120s;
    keepalive_timeout           120s;
    send_timeout                120s;
}

对此有什么想法吗?

【问题讨论】:

  • 你排除了记忆吗?尝试 1 个进程和 1 个线程。如果可行,您可能会遇到资源限制。 (我假设您的 Flask 应用程序配置为使用端口 5555 而不是通常的 5000。)

标签: nginx flask uwsgi


【解决方案1】:

我遇到了类似的问题并做了以下更改:

reload-on-rss=4048
threads=10
enable-threads=true
harakiri=130

对我来说,这解决了问题。

【讨论】:

    猜你喜欢
    • 2012-11-28
    • 2018-03-28
    • 1970-01-01
    • 2017-11-16
    • 2015-04-03
    • 2018-05-24
    • 1970-01-01
    • 2018-08-21
    • 2015-05-08
    相关资源
    最近更新 更多