当负载测试通过istio完成路由的kubernetes服务时,集群中的所有服务都变得没有响应。当正在进行负载测试的服务出现100%故障时,就会发生这种情况。
有没有办法防止这种情况发生?我们应该使用istio电路断路吗?
发布于 2021-05-26 15:44:04
简而言之,是的。断路器模式设计用于检测端点何时响应缓慢或根本没有响应。
响应缓慢的端点尤其麻烦,因为您已经发现它可能会导致系统延迟。断路器是控制流向端点的流量的代理。如果端点出现故障或速度太慢(基于您的配置),代理将打开到容器的电路。
使用connectionPool参数,您可以设置要在正在建立的请求上挂起的请求数。如果将http1MaxPendingRequests设置为1,并将maxRequestsPerConnection设置为1,则在处理挂起的请求之前,任何其他请求都将被拒绝。
另一个有用的选项是OutlierDetection。它检测故障实例,然后使其在预先配置的时间内不可用(有时称为休眠窗口)。当容器在这段时间内时,它被排除在路由和负载平衡之外,并且有时间恢复,同时不会因更多的请求而超载。
outlierDetection:
consecutive5xxErrors: 7
interval: 5m
baseEjectionTime: 15m上面的配置要求系统每5分钟扫描一次主机,如果连续7次失败,它将被弹出15分钟。
https://stackoverflow.com/questions/67697727
复制相似问题