我有这个nginx + uwsgi + django应用程序,效果很好。
但是当服务器上的负载变得更重时,我开始在随机请求中获得这502个错误。
这是uwsgi.ini的相关部分:
master = true
#more processes, more computing power
processes = 32
threads = 3
post-buffering = 1
# this one must match net.core.somaxconn
listen = 8000
我有大量的进程来处理大量的并发请求 - 我甚至在其上添加了一些线程 - 但我必须承认我期望listen
指令应该处理它。实际上,当我超过32 * 3个同时请求时,似乎会发生502错误。
我理解它的方式,监听应该允许最多8000个(在这种情况下)活动连接,等待服务器服务,但它似乎没有任何严重的影响。
uwsgi log清楚地说这是活跃的:
your server socket listen backlog is limited to 8000 connections
但我似乎误解了设置的效果。
无论如何,我只想解决502,所以我愿意接受任何方向的建议。
答案 0 :(得分:0)
我遇到了类似的问题,在负载下,我开始从uWSGI获得502的支持。
长话短说,请检查您是否在HTTP/1.1
上,是否在使用--http11-socket
,以及您在uWSGI=2.0.16
或更高版本上。
http / 1.1默认情况下进行持久连接。我发现,当侦听队列增加并且连接开始断开时,就会发生502。看看我的文章全文吧
https://wontonst.blogspot.com/2019/06/squishing-performance-bug-in.html