来自 Google CDN 的高延迟 - 如何解决?
High latency from Google CDN - how to troubleshoot it?
我们正在尝试找出 Google CDN 延迟高的原因。
我们的站点在 Google'a http_load_balancer 后面,CDN 已打开。
例如,通过检查一个 jpg 文件 (43Kb) 的 sampe GET 请求,我们可以从 http_load_balancer 日志中看到大约 30% 的此类请求 httpRequest.latency
> 1 秒,并且很多都需要更长的时间,比如几秒或几百秒....
这只是通过查看 24 小时日志样本(大约 6K 个相同的请求)。
所有这些请求的 httpRequest.cacheLookup
和 httpRequest.cacheHit
是 true
。
另外 jsonpayload_type_loadbalancerlogentry.statusdetails
是 response_from_cache
并且 jsonpayload_type_loadbalancerlogentry.cacheid
值显示正确的区域。
在浏览器中手动执行相同的 GET 请求时,我们会在 15-20 毫秒左右的 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
进行审核(此指标还包括后端的应用处理时间)。
- 通过实例本身上的软件运行。
为了对此进行调查,我将检查后端实例软件的 access/error 日志和 VM 实例的资源利用率。
有关 GCP load balancer metrics doc 上指标描述的更多信息。
httpRequest.latency
日志字段 description:
“服务器上的请求处理延迟,从收到请求到发送响应。”
我们正在尝试找出 Google CDN 延迟高的原因。
我们的站点在 Google'a http_load_balancer 后面,CDN 已打开。
例如,通过检查一个 jpg 文件 (43Kb) 的 sampe GET 请求,我们可以从 http_load_balancer 日志中看到大约 30% 的此类请求 httpRequest.latency
> 1 秒,并且很多都需要更长的时间,比如几秒或几百秒....
这只是通过查看 24 小时日志样本(大约 6K 个相同的请求)。
所有这些请求的 httpRequest.cacheLookup
和 httpRequest.cacheHit
是 true
。
另外 jsonpayload_type_loadbalancerlogentry.statusdetails
是 response_from_cache
并且 jsonpayload_type_loadbalancerlogentry.cacheid
值显示正确的区域。
在浏览器中手动执行相同的 GET 请求时,我们会在 15-20 毫秒左右的 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
进行审核(此指标还包括后端的应用处理时间)。 - 通过实例本身上的软件运行。 为了对此进行调查,我将检查后端实例软件的 access/error 日志和 VM 实例的资源利用率。
有关 GCP load balancer metrics doc 上指标描述的更多信息。
httpRequest.latency
日志字段 description:
“服务器上的请求处理延迟,从收到请求到发送响应。”