Gunicorn + Nginx-忽略EPIPE

时间:2019-04-19 21:32:46

标签: python nginx server gunicorn ubuntu-18.04

我在Google Computing上运行了Nginx-gunicorn-flask设置 而且我不断从Gunicorn获得以下信息:

call1_0 = require("lib1_0")

-- example of desired outcome
call1_0.type_2("x","y","z")             --> x     y   z

-- build up call from pieces
local major, minor, fnum = 1, 0, 2
local args = "'x', 'y', 'z'"
local codestr = string.format("call%d_%d.type_%d(%s)", major, minor, fnum, args)
print(codestr)                          --> call1_0.type_2('x', 'y', 'z')
local code = load(codestr)
code()                                  --> x     y   z
在100个请求中,

大约有23个这样发出。在访问日志中,仅显示23个请求,它们全部为200。

从nginx访问日志显示504,在错误日志中,我看到以下内容:

[2019-04-19 20:50:49 +0000] [3345] [DEBUG] POST /
[2019-04-19 20:50:49 +0000] [3345] [DEBUG] Ignoring EPIPE

我尝试设置

2019/04/19 20:50:49 [error] 3097#3097: *295 upstream timed out (110: Connection timed out) while sending request to upstream, client: ip, server: , request: "POST / HTTP/1.1", upstream: "http://unix:/home/user/Server/server.sock/", host: "ip"

基于other questions在gunicorn中的nginx和proxy_connect_timeout 75s; proxy_read_timeout 300s; 上的位置,但这没有帮助。

来自gunicorn的消息并不能真正帮助确定原因,而且我也没有找到任何有关信息

曾经尝试解决这个问题有一段时间,对此我将不胜感激。另外,每个请求大约需要1-2秒,jmeter会显示巨大的延迟,直到结果显示出来。

看看gunicorn的代码,这是一个errno.EPIPE异常,与套接字有关...

2 个答案:

答案 0 :(得分:0)

如果 GunicornNGINX 在同一台服务器上运行,这可能是权限问题。

ps aux | grep gunicorn 一样检查 Gunicorn 服务器正在运行您的应用程序的用户,然后您可以相应地更改权限。

停止NGINX,然后运行下面的命令

chown gunicorn_user_here.nginx /var/lib/nginx/tmp/proxy -v
rm /var/lib/nginx/tmp/proxy/* -R
chmod 777 /var/lib/nginx/tmp -v

启动 NGINX 并检查日志。

答案 1 :(得分:0)

我遇到了类似的问题和超时错误,除了增加超时值,添加 Nginx 配置 apache-airflow[postgres,ssh,google_auth, celery, google]==2.0.0 pre-commit dataclasses eventlet apache-airflow-upgrade-check sqlalchemy==1.3.23 redis flower gevent 检查这个 threadNginx doc

proxy_ignore_client_abort on;