Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.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
Ruby on rails 为什么我会得到间歇性的Excon::Error::Socket:getaddrinfo:没有与主机名(SocketError)关联的地址?_Ruby On Rails_Ruby_Sockets_Excon - Fatal编程技术网

Ruby on rails 为什么我会得到间歇性的Excon::Error::Socket:getaddrinfo:没有与主机名(SocketError)关联的地址?

Ruby on rails 为什么我会得到间歇性的Excon::Error::Socket:getaddrinfo:没有与主机名(SocketError)关联的地址?,ruby-on-rails,ruby,sockets,excon,Ruby On Rails,Ruby,Sockets,Excon,Rails 4-Ruby 2.2.2-Amazon AWS S3-dragonfly 1.0.12 -蜻蜓-s3_数据_存储1.2-雾aws 0.10.0 大约99%的时间我们没有问题。这个问题通常只发生在使用率很高的时候,但我注意到它也发生在几乎没有用户的时候。引发错误的行: # excon/lib/excon/socket.rb # line 100 inside the connection method. addrinfo = ::Socket.getaddrinfo(*args)

Rails 4-Ruby 2.2.2-Amazon AWS S3-dragonfly 1.0.12 -蜻蜓-s3_数据_存储1.2-雾aws 0.10.0

大约99%的时间我们没有问题。这个问题通常只发生在使用率很高的时候,但我注意到它也发生在几乎没有用户的时候。引发错误的行:

 # excon/lib/excon/socket.rb
 # line 100 inside the connection method.
 addrinfo = ::Socket.getaddrinfo(*args)
在应用程序中,错误无处不在。有时,当没有远程连接时会出现错误。-我无法再验证这一点

我使用Rails记录器捕获传入的参数,通过和失败之间似乎没有区别。以下是一些例子:

 # PASS
 ["s3.amazonaws.com", 443, 0, 1, nil, nil, false]
 ["mybucket.s3.amazonaws.com", 443, 0, 1, nil, nil, false]

 # FAIL
 ["mybucket.s3-us-west-1.amazonaws.com", 443, 0, 1, nil, nil, false]
我遇到过几个论坛,这些论坛让我相信excongem需要更新。我将Excon gem从0.45.4升级到0.51.0。除此之外,我还将Fog gem从1.36.0更新为1.38.0

升级后,错误从“getaddrinfo:名称或服务未知(SocketError)”变为“Excon::error::Socket:getaddrinfo:没有与主机名关联的地址(SocketError)”

为失败响应捕获的url与传递的url不同。我会进一步研究这个问题

更新:

dragonfly初始值设定项指定了与失败路径相同的路径,因为url\u主机覆盖了默认功能,所以我决定将其删除

 # myapp/config/initializers/dragonfly.rb
 ...
 url_host: 'mybucket.s3-us-west-1.amazonaws.com'

这没有导致任何变化。相同的url仍在使用,并且是唯一失败的url。

我也有此错误。在我的例子中,罪魁祸首要么是服务器负载(文件上传速度慢),要么是文件名中的特殊字符。由于在使用率较低时也会出现这种情况,因此您可能需要查看人们上传的文件名。对我来说,错误通常发生在有人以文件名上传了一个带有德语umlauts(ä,ö,ü,ß)的文件时

因此,请尝试上传一个名称中带有特殊字符的文件,并告诉我们这是否真实地再现了错误


如果是这种情况,则只需转义特殊字符或以不同的方式命名文件。以下是对特殊角色问题的描述:。

它可能无法解决您的问题,但我在两个案例中看到了类似的情况-

  • 防火墙限制了系统配置到的端口
  • 我的授权/身份验证凭据错误/过时

  • 你能分享一些通过/失败的参数以供参考吗?谢谢。当我们升级宝石时,伐木工人被带走了。我现在将添加成功的args,但我要到明天才能提供失败的args列表。似乎url正在添加“-us-west-1”。这可能是我不幸的原因。以下重定向可能失败(当连接和bucket位于不同区域时发生)。有些问题有时可能有点不可靠。@geemus您对处理和/或调试此问题有什么建议吗?我们在简单的get请求以及文件上载/下载中看到了错误。有时错误很简单:SocketError:getaddrinfo:Name或service在没有上述“Exconn”部分的情况下未知。好的,如果您在simply GET请求中遇到错误,我的解释不适合您的情况。根据我自己的上述经验,除了我所描述的以外,我没有其他想法。对不起:(