猿问

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

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


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


// Keep-alive connection to the servers

tr := &http.Transport{}

client := &http.Client{Transport: tr}

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


我的问题是:当我初始化我的传输(当我开始 Go 时)并让它们全部保持活动时,我如何创建额外的保持活动,比如每个远程服务器自己说 5 个保持活动?这将大大加快后续请求,速度非常重要。


手掌心
浏览 430回答 1
1回答

小唯快跑啊

根据 go-nuts 组的输入,要手动打开多个 keep-alive 到一台服务器,我们会同时发出许多请求。Go 然后保持这些活动直到远程服务器超时(Apache 中默认为 5 秒)。请注意,这些连接数不能超过MaxIdleConnsPerHost默认值 2。您可以使用验证此行为 netstat -p tcp
随时随地看视频慕课网APP

相关分类

Go
我要回答