如何调查 Openshift 中的延迟峰值

How to investigate latency spikes in Openshift

我们的 Openshift 集群经常出现延迟。

我们如何(除了正在安装 Istio 之外)测量这些延迟以获取更多信息?

是否有一些用于此目的的舵图?

这是我们的 Gatling 测试的结果:

测量延迟需要分布式跟踪,而 DT 需要将一些行添加到您的代码中。事实上,如果您想要分布式跟踪,即使使用 Istio,您也需要在代码中添加一些行。这就是为什么您可能永远找不到适合它的 Helm 图表的原因。

要走的路是通过 OpentracingAPI(现在是 Opentelemetry)收集数据,然后发送到某些 DT 后端,例如 JaegerZipkin

关于修改您的代码,在 API 工作时,您将手动启动跟踪 object,并向其添加跨度,这是您要衡量的个人工作。因此,您可以 start_spanstop_span 随心所欲。您可能在一项服务中有多个 span,或者只有一个。为了让其他服务将它们的跨度添加到同一跟踪 object,您可以将 context 从一个服务传递到另一个服务。

Istio 有点不同。您不会开始或停止跨度。但是您的跨度将是服务。您可以将第一个代理创建的一些 headers 从一个服务传递到另一个服务,Istio 将为每个服务执行 start_spanstop_span。因此,使用 Istio,每个服务不能有多个跨度,而只能有一个。

因此,OpentracingAPI 更难实施,但您可以完全控制测量的内容,而 Istio 更容易实施,但有一些限制。

现在,您通常不需要在一项服务中使用多个 span。由于这些是微服务,它们不会做很多事情。但最大的限制是你不能用 Istio 测量数据库连接,因为这些 headers 不是由代码处理的,而只有一个数据库,所以你需要 Envoy 代理来支持跟踪特定数据库。