【发布时间】:2016-10-12 23:29:50
【问题描述】:
我有 1000-2000 个网页要从一台服务器下载,我正在使用 go 例程和通道来实现高效率。问题是每次我运行我的程序时,最多 400 个请求都会失败,并出现错误“对等方重置连接”。很少(可能 10 次中有 1 次)没有请求失败。
我能做些什么来防止这种情况发生?
有趣的一点是,当我在与网站所在服务器位于同一国家/地区的服务器上运行此程序时,0 个请求失败,所以我猜测延迟存在一些问题(就像现在一样在不同大陆的服务器上运行)。
我使用的代码基本上只是一个简单的 http.Get(url) 请求,没有额外的参数或自定义客户端。
【问题讨论】:
-
所有或大部分页面来自同一台服务器?您同时发出的最大请求数是多少?
-
所有页面都来自同一服务器(编辑问题以反映这一点)。我不确定同时制作了多少。我只是启动与要下载的网页一样多的 goroutine,然后让 CPU/Golang 对并发施加限制。
-
没有明确的并发限制,你需要自己做。
标签: http go concurrency