mirror of
https://github.com/caddyserver/caddy.git
synced 2024-12-27 06:03:48 +03:00
reverseproxy: Optimize base case for least_conn and random_choose policies (#5487)
When only a single request has the least amount of requests, there's no need to compute a random number, because the modulo of 1 will always be 0 anyways.
This commit is contained in:
parent
335cd2e8a4
commit
b19946f6af
1 changed files with 4 additions and 1 deletions
|
@ -187,7 +187,7 @@ func (LeastConnSelection) Select(pool UpstreamPool, _ *http.Request, _ http.Resp
|
|||
// sample: https://en.wikipedia.org/wiki/Reservoir_sampling
|
||||
if numReqs == leastReqs {
|
||||
count++
|
||||
if (weakrand.Int() % count) == 0 { //nolint:gosec
|
||||
if count > 1 || (weakrand.Int()%count) == 0 { //nolint:gosec
|
||||
bestHost = host
|
||||
}
|
||||
}
|
||||
|
@ -707,6 +707,9 @@ func leastRequests(upstreams []*Upstream) *Upstream {
|
|||
if len(best) == 0 {
|
||||
return nil
|
||||
}
|
||||
if len(best) == 1 {
|
||||
return best[0]
|
||||
}
|
||||
return best[weakrand.Intn(len(best))] //nolint:gosec
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue