【发布时间】:2019-11-06 13:33:50
【问题描述】:
我基于这个tutorial写了一个flask应用
我的应用程序的行为类似于一种文件分发器。它接受文件并将它们分发到其他系统上的不同 API。
有时我会在 nginx 错误日志中看到以下错误。
2019/11/06 14:01:01 [error] 28912#28912: *19810346 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 192.168.2.60, server: my.host.local, request: "POST /file/add HTTP/1.1", upstream: "uwsgi://unix:/var/my_project/myproject.sock:", host: "my.host.local"
我打开了 uWSGI 日志记录,观察到当 uWSGI 在 60 秒后重新生成其 worker 时,nginx 日志中的错误也出现了。这不会一直发生,但在大多数情况下(~90%)都是这样。有时它只是有效,所以我认为,这一定是时间问题或类似的问题。
如果我的猜测是正确的,工人寿命的增加应该会减少 nginx 日志中错误事件的数量。实际上,uWSGI 不应该只是在请求未完成时重新生成 worker,那么问题是什么?
uWSGI ini 文件:
[uwsgi]
module = wsgi:app
master = true
processes = 48
threads = 2
enable-threads = True
limit-as = 512
disable-logging = True
buffer-size = 65535
max-worker-lifetime = 60
socket = myproject.sock
chmod-socket = 660
vacuum = true
die-on-term = true
#location of log files
logto = /var/log/uwsgi/%n.log
我的应用在 Ubuntu 18.04.3 LTS 虚拟机上运行,该虚拟机具有 24 个 CPU 和 128GB RAM(我知道这可能有点矫枉过正,但它只是为了测试。)
【问题讨论】: