我有一个应用程序可以打开几个远程服务器(我控制)的保持活动状态。它发送心跳包以在超时之前保持此连接的活动。
这就是我创建传输的方式:
// Keep-alive connection to the servers
tr := &http.Transport{}
client := &http.Client{Transport: tr}
如果我使用&http.Transport{MaxIdleConnsPerHost: 2}
并将其设置为> 2,然后我能够为每个远程连接维持多个保持活动。但是,当存在必须进行的并发请求时,每个远程服务器的这些额外保持活动由Go本身创建,并在超时到期后自动终止。
我的问题是:我如何创建额外的保持活动,比如我初始化我的传输时(每次启动Go时)每个远程服务器保持5次保持活动并保持活着状态?这将大大加快后续请求,速度非常重要。
答案 0 :(得分:1)
根据来自go-nuts组的输入,要手动打开多个keep-alives到一台服务器,我们会进行多次同步请求。然后继续保持这些活动,直到远程服务器将它们计时(在Apache中默认为5秒)。
请注意,这些连接不能超过默认为2的MaxIdleConnsPerHost
。
您可以使用netstat -p tcp