未定义 http1MaxPendingRequests 导致熔断不生效
我们给 DR 配置了
maxConnections
:apiVersion: networking.istio.io/v1beta1kind: DestinationRulemetadata:name: nginxspec:host: nginxtrafficPolicy:connectionPool:tcp:maxConnections: 1
但测试当并发超过这里定义的最大连接数时,并没有触发熔断,只是 QPS 很低。通常是因为没有配置
http1MaxPendingRequests
,不配置默认为 2^32-1
,非常大,表示如果超过最大连接数,请求就先等待(不直接返回503),当连接数低于最大值时再继续转发。如果希望连接达到上限或超过上限一定量后或直接熔断(响应503),就需要显式指定
http1MaxPendingRequests
:apiVersion: networking.istio.io/v1beta1kind: DestinationRulemetadata:name: nginxspec:host: nginxtrafficPolicy:connectionPool:tcp:maxConnections: 1http:http1MaxPendingRequests: 1