谷歌 CDN 的高延迟 - 如何进行故障排除?



我们试图找出为什么谷歌CDN有高延迟。

我们的网站落后于谷歌的http_load_balancer,并打开了CDN。

例如,通过检查 jpg 文件 (43Kb) 的 sampe GET 请求,我们可以从http_load_balancer日志中看到,大约 30% 的此类请求httpRequest.latency> 1 秒,而且很多请求需要更长的时间,例如几秒或数百秒......

这只是通过查看 24 小时日志样本(大约 6K 相同的请求)。

所有这些请求的httpRequest.cacheLookuphttpRequest.cacheHittrue。 此外,jsonpayload_type_loadbalancerlogentry.statusdetailsresponse_from_cache并且jsonpayload_type_loadbalancerlogentry.cacheid值显示正确的区域。

在浏览器中手动执行相同的GET请求时,我们在15-20ms左右获得了TTFB的预期结果。

知道在哪里寻找线索吗?

httpRequest.latency字段测量整个下载持续时间,并直接受到慢速客户端的影响 - 例如,网络上的移动设备或受限制的数据计划。

您可以通过查看云监控中的frontend_tcp_rtt指标(即客户端和云 CDN 之间的 RTT)以及平均值、中位数和第 90 个百分位数total_latencies来检查这一点,其中慢客户端将显示为异常值:https://cloud.google.com/load-balancing/docs/https/https-logging-monitoring#monitoring_metrics_fors

您可能会发现慢速客户端来自一组特定的client_country值。

可以引入延迟:

  • 在原始客户端和负载均衡器之间。 您可以使用指标https/frontend_tcp_rtt查看该分段的延迟。
  • 在负载均衡器和后端实例之间。 可以使用指标https/backend_latencies进行查看(此指标还包括后端中的应用处理时间)。
  • 由实例本身上运行的软件。为了调查这一点,我将检查后端实例软件上的访问/错误日志和 VM 实例的资源利用率。

有关指标说明的更多信息,请参阅 GCP 负载均衡器指标文档。

httpRequest.latency日志字段说明: "服务器上的请求处理延迟,从收到请求到发送响应。">

最新更新