在Go中向服务器打开多个keep alives
我有一个应用程序,可以打开一个“保持活动”到几个远程服务器(由我控制)。它发送一个心跳数据包,以在超时之前保持此连接的活动状态 这就是我创建传输的方式:在Go中向服务器打开多个keep alives,go,Go,我有一个应用程序,可以打开一个“保持活动”到几个远程服务器(由我控制)。它发送一个心跳数据包,以在超时之前保持此连接的活动状态 这就是我创建传输的方式: // Keep-alive connection to the servers tr := &http.Transport{} client := &http.Client{Transport: tr} 如果我使用&http.Transport{maxidleconsperhost:2}并将其设置为>2,那么我就能够为每个远程
// Keep-alive connection to the servers
tr := &http.Transport{}
client := &http.Client{Transport: tr}
如果我使用&http.Transport{maxidleconsperhost:2}
并将其设置为>2,那么我就能够为每个远程连接维护多个keep-alive。但是,当必须发出并发请求时,每个远程服务器的这些附加保持有效性由Go自己创建,并在超时过期后自动终止
我的问题是:我如何创建额外的keep-alive,比如说,当我初始化传输(当我开始运行时)时,我自己为每个远程服务器创建5个keep-alive,并使它们都保持活动状态?这将大大加快后续请求的速度,速度非常重要。根据go nuts组的输入,要手动打开多个keep Alive到一台服务器,我们会同时发出这么多请求。Go然后使它们保持活动状态,直到远程服务器超时为止(Apache中默认为5秒) 请注意,这些连接不能超过默认值为2的
MaxIdleConnsPerHost
您可以使用
netstat-ptcp
来验证此行为。看起来传输超时并不是空闲连接超时,需要关闭其他连接。您是对的,它尊重服务器的保持活动超时时间。