当前位置: 首页 > 面试题库 >

转到http.Get,并发和“对等重置连接”

何麻雀
2023-03-14
问题内容

我可以从一台服务器上下载1000-2000个网页,并且我正在使用go例程和通道来实现高效率。问题是,每次我运行程序时,多达400个请求都会失败,并显示错误“对等连接重置”。很少(可能是十分之一),没有请求失败。

我该怎么做才能防止这种情况?

有趣的一件事是,当我在与托管该网站的服务器所在的国家/地区的服务器上运行该程序时,0个请求失败,所以我猜测延迟存在一些问题(因为它现在正在运行另一大陆上的服务器)。

我使用的代码基本上只是一个简单的http.Get(url)请求,没有额外的参数或自定义客户端。


问题答案:

该消息connection reset by peer表明远程服务器发送了一个RST以强制关闭连接的方式,这是有意限制连接的机制,或者是由于资源不足而导致的。无论哪种方式,您可能打开太多的连接,或者重新连接的速度太快。

并行启动1000-2000个连接很少是下载那么多页面的最有效方法,特别是如果大多数或全部来自单个服务器时。如果您测试吞吐量,您会发现一个较低的最佳并发级别。

您还需要将设置Transport.MaxIdleConnsPerHost为与您的并发级别相匹配。如果MaxIdleConnsPerHost低于预期的并发连接数,则服务器连接通常会在请求后关闭,而仅立即再次打开-
这将大大减慢您的进度,并可能达到服务器施加的连接限制。



 类似资料:
  • 我正在尝试让一个简单的主机/客户端传输工作。我遵循了一个教程,服务器正常运行,但当客户端尝试连接时,它返回“由对等端重置连接”我真的不知道错误在哪里。

  • 我正在使用Python,并在给定端口上侦听UDP数据包,一切似乎都很好地工作-但经过较长时间后,脚本崩溃,出现以下错误: 当重新启动脚本时,相同的崩溃会在较短的时间后再次发生。相反,重新启动服务器似乎可以再次完全解决问题。 关于插座方面的事情,我正在做: 我是否遗漏了一些显而易见的东西,或者只是有一个简单的方法来避免这种情况? 提前感谢您提供的任何信息! 本吉

  • 我在RabbitMQ上犯了stainger错误。我发送了一些关于MQ和Php产品的信息,但出现了一些问题。我可以在出现异常“errno=104由对等方重置连接”的一分钟后发送消息。见下文: rabbitmq-3.6的版本。1,php-7.0版本。5,php amqp库的版本-“Videlavaro/php amqplib”:“~2.7 来自rabbitmq的日志:

  • 问题内容: 我设置rabbitmqserver并使用以下步骤添加了用户: 我的celery配置是这样的: 我的代码是这样的: 当我尝试跑步时 我懂了 一切看起来都很完美!有人可以帮我我在这里想念的吗? 问题答案: 一旦我将代码部署到生产环境并将Celery升级到3.1.12,问题就解决了。我最初使用3.0.19,但后来进行了升级,但没有发现任何问题。感谢您的支持。

  • 问题内容: 我的许多node.js进程都因ECONNRESET错误而崩溃。这是我可以看到的输出: 有人知道如何处理吗?这不是一个非常有用的堆栈跟踪,所以我不知道它在哪里发生。我是否应该使用try / catch块包装通过http访问远程源的所有访问权限?或者,还有更好的方法? 通常,我不关心是否会发生这种情况,或者是否因此而无法完成某些任务。我关心的是,该过程应该将其忽略,然后继续执行下一个任务。

  • 问题内容: 建立: selenium :3.141.0 的Python :3.6.7 heroku-stack :heroku-18 headless-chrome :安装了v71.0.3578.80 buildpack chromedriver :已安装v2.44.609551 buildpack 在heroku中使用selenium时出现此错误: 我用谷歌搜索,但是没有运气。错误发生在此代码的