Error handling of "Connection refused" conditions
r at roze.lv
Wed Jun 20 20:58:11 UTC 2012
> Is it considered good practice to reduce proxy_connect_timeout to some
> small value if responsiveness during an outage is desired?
It depends on the nature of the (backend) software and the network
infrastucture/latency - the closer the servers (network-wise) and the
higher throughput of the application the lower you can/should set it.
There is also a general observation/standard or apdex (Application
Performance Index) that average web-user starts to become "unsatisfied" if
the request takes more than 1-2 seconds so using the default 60 seconds (in
case of some backend failure) to deliver the content makes no sense - the
user will sooner hit refresh / just close the browsers (go to another site)
or fall in panic than wait for anything to load.
On the other hand making nginx immideatly close and switch to another
backend isnt always the (best) solution - especially if the backends do some
long running computations and/or accept only limited number of connections.
This way quickly cycling through all backends won't serve a good response at
all what matters if you have an extra caching layer above (to fetch a valid
object (html/image etc)) or some sort of transactions (like payment systems)
which just take time and each request is important.
I usually set it to 2-3 seconds.
That way I can also indicate if the backends perform well enough and react
if a new bottleneck arises - the application code, underlaying
DBs/filesystems start to get too slow.
More information about the nginx