IBM Cloud Code Engine:流量拆分时应用程序修订的不同响应时间

IBM Cloud Code Engine: Different response times for app revisions when traffic is split

我是 IBM Cloud Code Engine 上应用程序的 运行 个不同版本/修订版。我将流量分成 80/20。我注意到有时该应用程序会按预期响应,有时则不会。

可能是什么原因?我该如何调查?

如果您允许最小实例数为 0,则在零负载下应用程序将关闭。当下一个请求进来时会有启动/实例化时间。

我和 IBM Cloud Code Engine CLI and Knative CLI 一起调查了它。

首先,我检索了有关该应用程序的信息:

ibmcloud ce app get --name myapp

它显示两个修订版处于活动状态(由于流量分离),但未显示详细信息。 YAML 输出有更多信息。它表明一个修订版“缩放为零”,另一个修订版至少有一个实例处于活动状态。

ibmcloud ce app get --name myapp --output yaml

我还检查了是否有更多使用 Knative 的信息。首先,获取项目的 Kubernetes 配置:

ibmcloud ce project select --name myproject --kubecfg

然后,再次作为 YAML 输出列出修订:

kn revision list --output yaml

修订元数据的这一部分将 minScale 显示为零,导致(冷)启动并因此延迟。

  metadata:
    annotations:
      autoscaling.knative.dev/maxScale: "2"
      autoscaling.knative.dev/minScale: "0"

如果您有权访问应用程序延迟日志,它们可能会包括哪个版本返回了缓慢的结果,这有助于解释为什么您有时会得到不同的延迟结果。

响应中可能还有一个 Knative header,指示哪个修订服务于请求,但似乎没有任何关于这方面的一致记录。

如果您愿意将新代码推送到您的应用程序,您可以实现自己的 application-level 延迟和实例日志记录,这可能有助于确定主机级别或启动行为。