Need more details about max_fails and fail_timeout


#1

Hi,

I’m new to nginx, spent a morning reading nginx documentation. I’m
still
not clear how nginx determines the status of upstream servers. Let’s
say we
have some upstream servers, all set to max_fails=3 and fail_timeout=30s.
According to the document, if one server fails 3 times within 30s time,
nginx will mark this server to be inoperative and won’t direct any
request
to it. Is that right? Then the question is: will nginx try this server
again later to see if it recovers? If it does, what’s the algorithm?
If it
doesn’t, is there any way to inform nginx after the server recovers?

Steve


#2

Thanks for your answer.

So to Nginx, an upstream server is either good (operative) or bad
(inoperative). In good state, if it fails max_fails times within *
fail_timeout* period of time, Nginx switches its state to bad. If not,
it
stays good. In bad state, Nginx will try the server every
fail_timeouttime, if succeeds, its state is switched back to good,
otherwise it stays
bad. Nginx only dispatches requests to good servers. Any problem with
this
summary?

Steve

2009/2/19 Anton Y. removed_email_address@domain.invalid


#3

Sun Yijiang wrote:

I’m new to nginx, spent a morning reading nginx documentation. I’m
still not clear how nginx determines the status of upstream servers.
Let’s say we have some upstream servers, all set to max_fails=3 and
fail_timeout=30s. According to the document, if one server fails 3
times within 30s time, nginx will mark this server to be inoperative and
won’t direct any request to it. Is that right?

Right

Then the question is:
will nginx try this server again later to see if it recovers?

Yes, it will try to send requests after fail_timeout.

So fail_timeout used twice - errors counted for fail_timeout, and
upstream marked as dead for
fail_timeout.