diff src/core/ngx_resolver.h @ 6366:2e5c027f2a98

Resolver: per-request DNS server balancer. Previously, a global server balancer was used to assign the next DNS server to send a query to. That could lead to a non-uniform distribution of servers per request. A request could be assigned to the same dead server several times in a row and wait longer for a valid server or even time out without being processed. Now each query is sent to all servers sequentially in a circle until a response is received or timeout expires. Initial server for each request is still globally balanced.
author Roman Arutyunyan <arut@nginx.com>
date Thu, 28 Jan 2016 15:28:20 +0300
parents d35b4d590b2d
children 5a16d40c63de
line wrap: on
line diff
--- a/src/core/ngx_resolver.h
+++ b/src/core/ngx_resolver.h
@@ -93,6 +93,8 @@ typedef struct {
     time_t                    valid;
     uint32_t                  ttl;
 
+    ngx_uint_t                last_connection;
+
     ngx_resolver_ctx_t       *waiting;
 } ngx_resolver_node_t;