【问题标题】:uWSGI error hr_instance_read(): Connection reset by peeruWSGI 错误 hr_instance_read(): Connection reset by peer
【发布时间】:2018-10-15 19:02:49
【问题描述】:

我已经使用 uWSGI 和 NGINX 作为反向代理部署了一个烧瓶 Web 应用程序。应用程序响应时间平均约为 9 毫秒,但在一批请求之后,我的工作人员崩溃了,我在我的 uWSGI 日志中得到了这个日志:

[uwsgi-http key: backend client_addr: 172.17.0.1 client_port: 24488] hr_instance_read(): Connection reset by peer [plugins/http/http.c line 647]
[uwsgi-http key: backend client_addr: 172.17.0.1 client_port: 4059] hr_instance_read(): Connection reset by peer [plugins/http/http.c line 647]
[uwsgi-http key: backend client_addr: 172.17.0.1 client_port: 46764] hr_instance_read(): Connection reset by peer [plugins/http/http.c line 647]
[uwsgi-http key: backend client_addr: 172.17.0.1 client_port: 9951] hr_instance_read(): Connection reset by peer [plugins/http/http.c line 647]
[uwsgi-http key: backend client_addr: 172.17.0.1 client_port: 9449] hr_instance_read(): Connection reset by peer [plugins/http/http.c line 647]
[uwsgi-http key: backend client_addr: 172.17.0.1 client_port: 51355] hr_instance_read(): Connection reset by peer [plugins/http/http.c line 647]
[uwsgi-http key: backend client_addr: 172.17.0.1 client_port: 39565] hr_instance_read(): Connection reset by peer [plugins/http/http.c line 647]
[uwsgi-http key: backend client_addr: 172.17.0.1 client_port: 63142] hr_instance_read(): Connection reset by peer [plugins/http/http.c line 647]
[uwsgi-http key: backend client_addr: 172.17.0.1 client_port: 7861] hr_instance_read(): Connection reset by peer [plugins/http/http.c line 647]
[uwsgi-http key: backend client_addr: 172.17.0.1 client_port: 10165] hr_instance_read(): Connection reset by peer [plugins/http/http.c line 647]
[uwsgi-http key: backend client_addr: 172.17.0.1 client_port: 10917] hr_instance_read(): Connection reset by peer [plugins/http/http.c line 647]
[uwsgi-http key: backend client_addr: 172.17.0.1 client_port: 20392] hr_instance_read(): Connection reset by peer [plugins/http/http.c line 647]

uWSGI 配置:

[uwsgi]
http = 0.0.0.0:7000
wsgi-file = app.py
callable = app
processes = 5
lazy = true
lazy-apps = true
buffer-size = 16384
logto = /root/logs/data-gathering.log

环境:

uWSGI==2.0.17
Flask==0.12.2

【问题讨论】:

标签: python nginx uwsgi


【解决方案1】:

我在使用 uWSGI 原生 HTTP 服务器时遇到了同样的问题。配置如下:

https = :8443,app.crt,app.key,HIGH,!ca.crt
http-workers = 2
http-buffer-size = 32768

; applications
mount = /=/app.py
mount = /asq=/asq.py

; process managment
master = true
vacuum = true
single-interpreter = true
pidfile = /tmp/uwsgi.pid
enable-threads = true
cpu-affinity = 1
processes = 4
threads = 2
offload-threads = 1

close-on-exec = true
buffer-size = 32768

我总是得到:

[uwsgi-http key: 192.168.1.200:8443 client_addr: 192.168.1.200 client_port: 20179] hr_instance_read(): Connection reset by peer [plugins/http/http.c line 647]

在我的例子中,我执行的是 POST 请求而不是消耗正文。因此,在将post-buffering = 1 添加到配置后,一切都开始正常工作了。没有标志的相同结果,只读取 POST 数据。

来自 uWSGI 的“须知”:

如果 HTTP 请求有正文(例如由 表格),您必须在您的应用程序中阅读(使用)它。如果你这样做 不这样做,与您的网络服务器的通信套接字可能是 重创。如果你很懒,你可以使用后缓冲选项 会自动为你读取数据。对于机架应用程序,这是 自动启用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-02
    • 1970-01-01
    • 2012-07-15
    • 2019-06-11
    • 1970-01-01
    • 2012-01-18
    • 1970-01-01
    • 2020-01-15
    相关资源
    最近更新 更多