aboutsummaryrefslogtreecommitdiff
path: root/src/stream/ngx_stream_upstream_hash_module.c
diff options
context:
space:
mode:
authorMaxim Dounin <mdounin@mdounin.ru>2017-10-05 17:43:05 +0300
committerMaxim Dounin <mdounin@mdounin.ru>2017-10-05 17:43:05 +0300
commit53d655f89407af017cd193fd4d8d82118c9c2c80 (patch)
tree7f43476c306c54883787d1e8994e85797ce2b51d /src/stream/ngx_stream_upstream_hash_module.c
parenta10ec2db91b448029968025d23155e9c383f522d (diff)
downloadnginx-53d655f89407af017cd193fd4d8d82118c9c2c80.tar.gz
nginx-53d655f89407af017cd193fd4d8d82118c9c2c80.zip
Upstream hash: reordered peer checks.
This slightly reduces cost of selecting a peer if all or almost all peers failed, see ticket #1030. There should be no measureable difference with other workloads.
Diffstat (limited to 'src/stream/ngx_stream_upstream_hash_module.c')
-rw-r--r--src/stream/ngx_stream_upstream_hash_module.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/src/stream/ngx_stream_upstream_hash_module.c b/src/stream/ngx_stream_upstream_hash_module.c
index 413537989..79ad742cf 100644
--- a/src/stream/ngx_stream_upstream_hash_module.c
+++ b/src/stream/ngx_stream_upstream_hash_module.c
@@ -544,13 +544,6 @@ ngx_stream_upstream_get_chash_peer(ngx_peer_connection_t *pc, void *data)
continue;
}
- if (peer->server.len != server->len
- || ngx_strncmp(peer->server.data, server->data, server->len)
- != 0)
- {
- continue;
- }
-
if (peer->max_fails
&& peer->fails >= peer->max_fails
&& now - peer->checked <= peer->fail_timeout)
@@ -562,6 +555,13 @@ ngx_stream_upstream_get_chash_peer(ngx_peer_connection_t *pc, void *data)
continue;
}
+ if (peer->server.len != server->len
+ || ngx_strncmp(peer->server.data, server->data, server->len)
+ != 0)
+ {
+ continue;
+ }
+
peer->current_weight += peer->effective_weight;
total += peer->effective_weight;