在Go中为服务器打开多个keep-alives

时间:2014-09-09 18:41:01

标签: go

我有一个应用程序可以打开几个远程服务器(我控制)的保持活动状态。它发送心跳包以在超时之前保持此连接的活动。

这就是我创建传输的方式:

// Keep-alive connection to the servers
tr := &http.Transport{}
client := &http.Client{Transport: tr}

如果我使用&http.Transport{MaxIdleConnsPerHost: 2}并将其设置为> 2,然后我能够为每个远程连接维持多个保持活动。但是,当存在必须进行的并发请求时,每个远程服务器的这些额外保持活动由Go本身创建,并在超时到期后自动终止。

我的问题是:我如何创建额外的保持活动,比如我初始化我的传输时(每次启动Go时)每个远程服务器保持5次保持活动并保持活着状态?这将大大加快后续请求,速度非常重要。

1 个答案:

答案 0 :(得分:1)

根据来自go-nuts组的输入,要手动打开多个keep-alives到一台服务器,我们会进行多次同步请求。然后继续保持这些活动,直到远程服务器将它们计时(在Apache中默认为5秒)。

请注意,这些连接不能超过默认为2的MaxIdleConnsPerHost

您可以使用netstat -p tcp

验证此行为