Sidecar 性能取决于许多因素,例如:
客户端连接数
目标请求速率
请求大小和响应大小
代理工作线程数
协议
CPU 核心数
代理过滤器的数量和类型,特别是与 telemetry v2 相关的过滤器。 延迟、吞吐量以及代理的 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 的默认资源配额使用。
具有平台管理权限的用户可以导航到服务网格详情页,并在 Configuration 标签下,通过更新 Cluster Dimension Configuration 来调整默认 Sidecar 资源配额。
添加新服务时,设置特定的 Sidecar 资源配额(CPU 和内存)。
访问已添加服务的详情页后,导航到 Details 标签,并在 Sidecar 中更新 Sidecar 配置。