交流一下,用 NGINX 反代后端运行于多个端口的 Python 程序时,大家的 max_fails 和 fail_timeout 都是怎么设的呢?

2015-03-08 09:42:08 +08:00
 Livid
4145 次点击
所在节点    NGINX
3 条回复
est
2015-03-08 12:00:10 +08:00
max_fails=0

fail_timeout和uWSGI里harakiri 设置时间一样。

如果是Ruby的unicorn,和 :timeout 设置一样。

所有upstream数量x每个upstream的worker数量的fail_timeout 加起来,应该不超过 proxy_read_timeout+proxy_connect_timeout 。默认是60秒。

也就是说,当upstream很忙的时候,nginx会挨个去尝试每个upstream,upstream会加入worker的处理队列,当这个所有处理能力都满了,nginx没有必要二次等待,直接返回504 gateway timeout算了。。。
luw2007
2015-03-08 23:23:29 +08:00
final_timeout 理解的不对吧。 请查看 http://wiki.nginx.org/HttpUpstreamModule#server 中的解释。
如果max_fails 为0,就不会去检查``fail_timeout``, 查看使用fail_timeout的源代码,就会异常清晰。
<code>
if (peer->max_fails
&& peer->fails >= peer->max_fails
&& now - peer->checked <= peer->fail_timeout)
</code>
est
2015-03-09 16:02:53 +08:00
@luw2007 你说的有道理,但是假如fail_timeout设置为60s,max_fails默认为1,那么1次失败之后,这个worker就会闲置60秒。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/175283

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX