首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >%HTTPoison.Error{id: nil,%HTTPoison.Error::closed}

%HTTPoison.Error{id: nil,%HTTPoison.Error::closed}
EN

Stack Overflow用户
提问于 2017-03-28 20:52:36
回答 1查看 732关注 0票数 2

我们在post和get请求的代码库中使用了HTTPoison,同时使用了hackney池。这里的帖子只是因为我想从所有的专家那里得到一些意见。

我们使用许多摄像头,从每个摄像头获取图像,然后将所有这些图像保存到 seaweedFS服务器。

我们在每秒范围内发出了几乎上千个请求。在seaweedFS端,我们使用10秒的超时启动了服务器。在我们的代码库方面,为了上传我们正在使用的hackney配置的图像。

代码语言:javascript
复制
  :hackney_pool.child_spec(:seaweedfs_upload_pool, [timeout: 5000, max_connections: 1000]),
  :hackney_pool.child_spec(:seaweedfs_download_pool, [timeout: 5000, max_connections: 1000]),

在过去的几天里,我们在这方面有一个问题。最初,我们这边的超时和max_connections是10秒和5K。我们开始得到这些HTTPoison错误,因为

代码语言:javascript
复制
{%HTTPoison.Error{id: nil, reason: :closed}}

错误计数如此之高,几乎达到12K等等,所以暂时,在Elixir Slack通道中讨论后,我将超时和max_connections更改为上述设置。在此之后,错误从12K减少到3K,但只持续了2到3天,之后错误计数再次增加到12K,依此类推。

开发SeaweedFS的人指出,我们用来发送HTTP请求的库没有关闭连接,并且在我们的seaweedFS服务器端(我们的代码库向其发送读写请求的服务器),此命令的结果是

代码语言:javascript
复制
root@Ubuntu-1404-trusty-64-minimal ~ # netstat | grep http | wc -l
5086

有没有人能给我提个建议?此错误的原因可能是什么?

我在Elixir Slack Channel上做了一些讨论,我所知道的是,对于hackney池,如果我们正在进行一个超时5秒的post请求,并且HTTP请求在2到3秒内成功返回,那么为该请求建立的连接将保持打开另外2秒(完成5秒),以便仍然打开的连接可以被其他http post请求使用?也许我在这个理论上是错的。

但如果有人能给我一些关于hackney pool的更好的解决方案,那就太好了。

我们使用的是HTTPoison 0.11.1,最终使用的是hackney 1.7.1。

EN

回答 1

Stack Overflow用户

发布于 2021-09-28 13:17:20

我遇到了以下错误:

代码语言:javascript
复制
 test login  --core test (Devato.Features.IndexPageTest)
 test/devato_web/features/index_page_test.exs:13
 ** (RuntimeError) Wallaby had an internal issue with HTTPoison:
 %HTTPoison.Error{id: nil, reason: :timeout}
 stacktrace:
   (wallaby 0.23.0) lib/wallaby/httpclient.ex:37: Wallaby.HTTPClient.make_request/5
   (wallaby 0.23.0) lib/wallaby/experimental/chrome.ex:96: Wallaby.Experimental.Chrome.start_session/1
   (wallaby 0.23.0) lib/wallaby.ex:78: Wallaby.start_session/1
   (devato 0.1.0) test/support/feature_case.ex:25: Devato.FeatureCase.__ex_unit_setup_0/1
   (devato 0.1.0) test/support/feature_case.ex:1: Devato.FeatureCase.__ex_unit__/2
   test/devato_web/features/index_page_test.exs:1: Devato.Features.IndexPageTest.__ex_unit__/2

我可以在chrome headless中运行测试,但我需要它工作,这样我才能看到它在浏览器上运行。对我起作用的是配置超时

Wallaby 0.23.0添加了以下配置:

代码语言:javascript
复制
config :wallaby,
    hackney_options: [timeout: :infinity, recv_timeout: :infinity]

重写值

代码语言:javascript
复制
config :wallaby,
    hackney_options: [timeout: 5_000]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43070115

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档