diff options
author | Maxim Dounin <mdounin@mdounin.ru> | 2017-10-05 17:43:05 +0300 |
---|---|---|
committer | Maxim Dounin <mdounin@mdounin.ru> | 2017-10-05 17:43:05 +0300 |
commit | 53d655f89407af017cd193fd4d8d82118c9c2c80 (patch) | |
tree | 7f43476c306c54883787d1e8994e85797ce2b51d /src/stream/ngx_stream_upstream_hash_module.c | |
parent | a10ec2db91b448029968025d23155e9c383f522d (diff) | |
download | nginx-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.c | 14 |
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; |