google app引擎与azure认知搜索之间延迟127秒



我们的大部分服务都在Google cloud上,但是我们连接到Azure Cognitive search进行全文搜索。

从大约一个月前开始,应用引擎和认知搜索之间开始出现随机延迟,请求持续花费127.2-127.3秒,即比正常请求多127秒。这是专门针对认知搜索的请求,而不是基础设施或代码的任何其他部分。

奇怪的是,这些延迟不会出现在本地测试,vm, k8s或其他任何地方。然而,在花了三周的时间才给出答案后,谷歌坚称这是由"数据包丢失"引起的"azure问题"。它们确实表明一些请求连接到ipv4地址,而其他请求连接到ipv6地址,但我也没有发现这里的相关性。

什么问题会导致如此特殊的延迟?

这似乎是由于IPv6问题,请求库(或底层python基础设施)在多次指数级返回重试后切换到IPv4,导致~2^7-1秒延迟。

强制IPv4连接可以使用这个丑陋的hack来完成:

import socket
import requests.packages.urllib3.util.connection as urllib3_cn
# https://pythonadventures.wordpress.com/2019/06/28/force-requests-to-use-ipv4/
urllib3_cn.allowed_gai_family = lambda: socket.AF_INET  # force IPv4

最新更新