nginx fail timeout

nginx upstream默认的健康检查是是使用了fail_timeout的

http://nginx.org/en/docs/http/ngx_http_upstream_module.html

1
2
3
4
fail_timeout=timesets
* the time during which the specified number of unsuccessful attempts to communicate with the server should happen to consider the server unavailable;
* and the period of time the server will be considered unavailable.
By default, the parameter is set to 10 seconds.

这里其实就是写了当与后端服务器尝试通信不成功达到多少次数后就认为服务器不可用。一段时间内就将是不可用的状态,其实就是从upstream中摘除。

但是这个尝试通信不成功具体表示什么呢? 后端504,503,500这样认为是有问题的吗?实际测试结果就是没问题,当时开发同学问了一下,我说还真没想过这个,我记得http的是有单独的模块去检查的。
这个理论上只有端口级别的监控,那就只有端口响应时间为依据。

根据实际测试就是这样的情况。本来还用lua模拟一下慢响应,发现这个不行,慢响应只是http响应慢,不是tcp响应慢。所以测试好久直到把upstream压挂了才出现502.

不过测试的时候发现了无论ab还是siege还都是有一些限制的,他们会等待响应,而且并发线程数设置多高,其实还是一个个过去的。