Mercurial > hg > nginx-quic
comparison src/stream/ngx_stream_upstream_round_robin.c @ 6705:29bf0dbc0a77
Upstream: max_conns.
author | Ruslan Ermilov <ru@nginx.com> |
---|---|
date | Thu, 22 Sep 2016 19:32:47 +0300 |
parents | a44ba757851d |
children | 829468da49d6 |
comparison
equal
deleted
inserted
replaced
6704:a44ba757851d | 6705:29bf0dbc0a77 |
---|---|
94 peer[n].socklen = server[i].addrs[j].socklen; | 94 peer[n].socklen = server[i].addrs[j].socklen; |
95 peer[n].name = server[i].addrs[j].name; | 95 peer[n].name = server[i].addrs[j].name; |
96 peer[n].weight = server[i].weight; | 96 peer[n].weight = server[i].weight; |
97 peer[n].effective_weight = server[i].weight; | 97 peer[n].effective_weight = server[i].weight; |
98 peer[n].current_weight = 0; | 98 peer[n].current_weight = 0; |
99 peer[n].max_conns = server[i].max_conns; | |
99 peer[n].max_fails = server[i].max_fails; | 100 peer[n].max_fails = server[i].max_fails; |
100 peer[n].fail_timeout = server[i].fail_timeout; | 101 peer[n].fail_timeout = server[i].fail_timeout; |
101 peer[n].down = server[i].down; | 102 peer[n].down = server[i].down; |
102 peer[n].server = server[i].name; | 103 peer[n].server = server[i].name; |
103 | 104 |
157 peer[n].socklen = server[i].addrs[j].socklen; | 158 peer[n].socklen = server[i].addrs[j].socklen; |
158 peer[n].name = server[i].addrs[j].name; | 159 peer[n].name = server[i].addrs[j].name; |
159 peer[n].weight = server[i].weight; | 160 peer[n].weight = server[i].weight; |
160 peer[n].effective_weight = server[i].weight; | 161 peer[n].effective_weight = server[i].weight; |
161 peer[n].current_weight = 0; | 162 peer[n].current_weight = 0; |
163 peer[n].max_conns = server[i].max_conns; | |
162 peer[n].max_fails = server[i].max_fails; | 164 peer[n].max_fails = server[i].max_fails; |
163 peer[n].fail_timeout = server[i].fail_timeout; | 165 peer[n].fail_timeout = server[i].fail_timeout; |
164 peer[n].down = server[i].down; | 166 peer[n].down = server[i].down; |
165 peer[n].server = server[i].name; | 167 peer[n].server = server[i].name; |
166 | 168 |
225 peer[i].socklen = u.addrs[i].socklen; | 227 peer[i].socklen = u.addrs[i].socklen; |
226 peer[i].name = u.addrs[i].name; | 228 peer[i].name = u.addrs[i].name; |
227 peer[i].weight = 1; | 229 peer[i].weight = 1; |
228 peer[i].effective_weight = 1; | 230 peer[i].effective_weight = 1; |
229 peer[i].current_weight = 0; | 231 peer[i].current_weight = 0; |
232 peer[i].max_conns = 0; | |
230 peer[i].max_fails = 1; | 233 peer[i].max_fails = 1; |
231 peer[i].fail_timeout = 10; | 234 peer[i].fail_timeout = 10; |
232 *peerp = &peer[i]; | 235 *peerp = &peer[i]; |
233 peerp = &peer[i].next; | 236 peerp = &peer[i].next; |
234 } | 237 } |
436 | 439 |
437 if (peer->down) { | 440 if (peer->down) { |
438 goto failed; | 441 goto failed; |
439 } | 442 } |
440 | 443 |
444 if (peer->max_conns && peer->conns >= peer->max_conns) { | |
445 goto failed; | |
446 } | |
447 | |
441 rrp->current = peer; | 448 rrp->current = peer; |
442 | 449 |
443 } else { | 450 } else { |
444 | 451 |
445 /* there are several peers */ | 452 /* there are several peers */ |
534 | 541 |
535 if (peer->max_fails | 542 if (peer->max_fails |
536 && peer->fails >= peer->max_fails | 543 && peer->fails >= peer->max_fails |
537 && now - peer->checked <= peer->fail_timeout) | 544 && now - peer->checked <= peer->fail_timeout) |
538 { | 545 { |
546 continue; | |
547 } | |
548 | |
549 if (peer->max_conns && peer->conns >= peer->max_conns) { | |
539 continue; | 550 continue; |
540 } | 551 } |
541 | 552 |
542 peer->current_weight += peer->effective_weight; | 553 peer->current_weight += peer->effective_weight; |
543 total += peer->effective_weight; | 554 total += peer->effective_weight; |