tl;博士:
当google cloud HTTPS负载均衡器打开一个tcp流(在请求中带有“Connection:保活”标头)时,是否可以保证该流将对后端服务器保持开放多长时间(最多)?
更长:
我在HTTPS负载均衡器后面部署了一个Go超文本传输协议服务器,很快就遇到了很多问题,因为我在我的套接字连接上设置了一个激进的(10秒)读取截止日期,这意味着我的服务器经常在读取后续请求的过程中关闭连接。所以很明显我做错了,但同时我不想在我的套接字上不设置任何截止日期,因为我想防止这些服务器随着时间的推移慢慢泄露死连接的可能性,吃掉我所有的文件描述符。
因此,如果负载均衡器在5分钟后自动关闭它们打开的任何tcp流,那就太好了。这样我就可以将服务器的读取截止时间设置为(例如)6分钟,并且我可以确保我永远不会中断任何请求——截止时间只会在特殊情况下调用(例如,我的服务器没有收到来自负载均衡器的FIN数据包)。
我无法从Google企业支持中获得官方答案,但从我的实验(分析多小时的tcpdump)来看,负载均衡器似乎会在空闲约10分钟后关闭连接(这意味着10分钟内没有tcp数据包)。
根据这里,到计算实例的空闲TCP连接在10分钟后超时,这似乎证实了您的假设。