diff --git a/adapter/outboundgroup/loadbalance.go b/adapter/outboundgroup/loadbalance.go index 7dc4d3d3c..48bd49942 100644 --- a/adapter/outboundgroup/loadbalance.go +++ b/adapter/outboundgroup/loadbalance.go @@ -115,11 +115,20 @@ func (lb *LoadBalance) SupportUDP() bool { } func strategyRoundRobin() strategyFn { + flag := true idx := 0 return func(proxies []C.Proxy, metadata *C.Metadata) C.Proxy { length := len(proxies) for i := 0; i < length; i++ { - idx = (idx + 1) % length + flag = !flag + if flag { + idx = (idx - 1) % length + } else { + idx = (idx + 2) % length + } + if idx < 0 { + idx = idx + length + } proxy := proxies[idx] if proxy.Alive() { return proxy