Mercurial > hg > nginx-quic
comparison src/http/ngx_http_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 | fd5c2781460b |
comparison
equal
deleted
inserted
replaced
6704:a44ba757851d | 6705:29bf0dbc0a77 |
---|---|
90 peer[n].socklen = server[i].addrs[j].socklen; | 90 peer[n].socklen = server[i].addrs[j].socklen; |
91 peer[n].name = server[i].addrs[j].name; | 91 peer[n].name = server[i].addrs[j].name; |
92 peer[n].weight = server[i].weight; | 92 peer[n].weight = server[i].weight; |
93 peer[n].effective_weight = server[i].weight; | 93 peer[n].effective_weight = server[i].weight; |
94 peer[n].current_weight = 0; | 94 peer[n].current_weight = 0; |
95 peer[n].max_conns = server[i].max_conns; | |
95 peer[n].max_fails = server[i].max_fails; | 96 peer[n].max_fails = server[i].max_fails; |
96 peer[n].fail_timeout = server[i].fail_timeout; | 97 peer[n].fail_timeout = server[i].fail_timeout; |
97 peer[n].down = server[i].down; | 98 peer[n].down = server[i].down; |
98 peer[n].server = server[i].name; | 99 peer[n].server = server[i].name; |
99 | 100 |
153 peer[n].socklen = server[i].addrs[j].socklen; | 154 peer[n].socklen = server[i].addrs[j].socklen; |
154 peer[n].name = server[i].addrs[j].name; | 155 peer[n].name = server[i].addrs[j].name; |
155 peer[n].weight = server[i].weight; | 156 peer[n].weight = server[i].weight; |
156 peer[n].effective_weight = server[i].weight; | 157 peer[n].effective_weight = server[i].weight; |
157 peer[n].current_weight = 0; | 158 peer[n].current_weight = 0; |
159 peer[n].max_conns = server[i].max_conns; | |
158 peer[n].max_fails = server[i].max_fails; | 160 peer[n].max_fails = server[i].max_fails; |
159 peer[n].fail_timeout = server[i].fail_timeout; | 161 peer[n].fail_timeout = server[i].fail_timeout; |
160 peer[n].down = server[i].down; | 162 peer[n].down = server[i].down; |
161 peer[n].server = server[i].name; | 163 peer[n].server = server[i].name; |
162 | 164 |
221 peer[i].socklen = u.addrs[i].socklen; | 223 peer[i].socklen = u.addrs[i].socklen; |
222 peer[i].name = u.addrs[i].name; | 224 peer[i].name = u.addrs[i].name; |
223 peer[i].weight = 1; | 225 peer[i].weight = 1; |
224 peer[i].effective_weight = 1; | 226 peer[i].effective_weight = 1; |
225 peer[i].current_weight = 0; | 227 peer[i].current_weight = 0; |
228 peer[i].max_conns = 0; | |
226 peer[i].max_fails = 1; | 229 peer[i].max_fails = 1; |
227 peer[i].fail_timeout = 10; | 230 peer[i].fail_timeout = 10; |
228 *peerp = &peer[i]; | 231 *peerp = &peer[i]; |
229 peerp = &peer[i].next; | 232 peerp = &peer[i].next; |
230 } | 233 } |
335 peer[0].socklen = ur->socklen; | 338 peer[0].socklen = ur->socklen; |
336 peer[0].name = ur->host; | 339 peer[0].name = ur->host; |
337 peer[0].weight = 1; | 340 peer[0].weight = 1; |
338 peer[0].effective_weight = 1; | 341 peer[0].effective_weight = 1; |
339 peer[0].current_weight = 0; | 342 peer[0].current_weight = 0; |
343 peer[0].max_conns = 0; | |
340 peer[0].max_fails = 1; | 344 peer[0].max_fails = 1; |
341 peer[0].fail_timeout = 10; | 345 peer[0].fail_timeout = 10; |
342 peers->peer = peer; | 346 peers->peer = peer; |
343 | 347 |
344 } else { | 348 } else { |
368 peer[i].name.len = len; | 372 peer[i].name.len = len; |
369 peer[i].name.data = p; | 373 peer[i].name.data = p; |
370 peer[i].weight = 1; | 374 peer[i].weight = 1; |
371 peer[i].effective_weight = 1; | 375 peer[i].effective_weight = 1; |
372 peer[i].current_weight = 0; | 376 peer[i].current_weight = 0; |
377 peer[i].max_conns = 0; | |
373 peer[i].max_fails = 1; | 378 peer[i].max_fails = 1; |
374 peer[i].fail_timeout = 10; | 379 peer[i].fail_timeout = 10; |
375 *peerp = &peer[i]; | 380 *peerp = &peer[i]; |
376 peerp = &peer[i].next; | 381 peerp = &peer[i].next; |
377 } | 382 } |
430 | 435 |
431 if (peer->down) { | 436 if (peer->down) { |
432 goto failed; | 437 goto failed; |
433 } | 438 } |
434 | 439 |
440 if (peer->max_conns && peer->conns >= peer->max_conns) { | |
441 goto failed; | |
442 } | |
443 | |
435 rrp->current = peer; | 444 rrp->current = peer; |
436 | 445 |
437 } else { | 446 } else { |
438 | 447 |
439 /* there are several peers */ | 448 /* there are several peers */ |
528 | 537 |
529 if (peer->max_fails | 538 if (peer->max_fails |
530 && peer->fails >= peer->max_fails | 539 && peer->fails >= peer->max_fails |
531 && now - peer->checked <= peer->fail_timeout) | 540 && now - peer->checked <= peer->fail_timeout) |
532 { | 541 { |
542 continue; | |
543 } | |
544 | |
545 if (peer->max_conns && peer->conns >= peer->max_conns) { | |
533 continue; | 546 continue; |
534 } | 547 } |
535 | 548 |
536 peer->current_weight += peer->effective_weight; | 549 peer->current_weight += peer->effective_weight; |
537 total += peer->effective_weight; | 550 total += peer->effective_weight; |