Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Go中向服务器打开多个keep alives_Go - Fatal编程技术网

在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

来验证此行为。看起来传输超时并不是空闲连接超时,需要关闭其他连接。您是对的,它尊重服务器的保持活动超时时间。