性能
Sidecar 性能取决于许多因素,例如:
-
客户端连接数
-
目标请求速率
-
请求大小和响应大小
-
代理工作线程数
-
协议
-
CPU 核心数
代理过滤器的数量和类型,特别是与 telemetry v2 相关的过滤器。 延迟、吞吐量以及代理的 CPU 和内存消耗均作为这些因素的函数进行测量。
目录
CPU 和内存消耗
由于 sidecar 代理在数据路径上执行额外工作,因此它会消耗 CPU 和内存。截至 Istio 1.12.3,代理每处理 1000 个请求每秒大约消耗 0.5 个 vCPU。
代理的内存消耗取决于代理持有的总配置状态。大量的 listener、cluster 和 route 会增加内存使用。
由于代理通常不缓存通过的数据,请求速率不会影响内存消耗。
额外延迟
由于 Istio 在数据路径上注入了 sidecar 代理,延迟是一个重要的考量。Istio 向代理添加了身份验证过滤器、遥测过滤器和元数据交换过滤器。每个额外的过滤器都会增加代理内部的路径长度并影响延迟。
Envoy 代理在响应发送给客户端后收集原始遥测数据。收集请求的原始遥测所花费的时间不计入完成该请求的总时间。然而,由于工作线程忙于处理该请求,工作线程不会立即开始处理下一个请求。此过程增加了下一个请求的排队等待时间,并影响平均和尾部延迟。实际尾部延迟取决于流量模式。
在网格内部,请求先经过客户端代理,然后是服务器端代理。在 Istio 1.12.3 的默认配置(即带有 telemetry v2 的 Istio)中,这两个代理分别在基线数据平面延迟上增加约 1.7 毫秒和 2.7 毫秒的第 90 和第 99 百分位延迟。
调整 sidecar 资源配额(CPU 和内存)
集群维度
在服务网格的集群级别配置中,可以设置集群的默认 Sidecar 资源配额(CPU 和内存)。当用户添加服务时,此配置将作为 Sidecar 的默认资源配额使用。
具有平台管理权限的用户可以导航到服务网格详情页,并在 Configuration 标签下,通过更新 Cluster Dimension Configuration 来调整默认 Sidecar 资源配额。
指定服务
-
添加新服务时,设置特定的 Sidecar 资源配额(CPU 和内存)。
-
访问已添加服务的详情页后,导航到 Details 标签,并在 Sidecar 中更新 Sidecar 配置。