【问题标题】:Why am I getting intermittent Excon::Error::Socket: getaddrinfo: No address associated with hostname (SocketError)?为什么我会出现间歇性 Excon::Error::Socket: getaddrinfo: No address associated with hostname (SocketError)?
【发布时间】:2016-12-08 06:15:54
【问题描述】:

Rails 4 - Ruby 2.2.2 - 亚马逊 AWS S3 - 蜻蜓 1.0.12 - 蜻蜓-s3_data_store 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]

我遇到了几个论坛,这些论坛让我相信 excon gem 需要更新。我将 Excon gem 从 0.45.4 升级到了 0.51.0。除此之外,我还将 Fog gem 从 1.36.0 更新到 1.38.0。

升级后错误从“getaddrinfo: Name or service not known (SocketError)”变为“Excon::Error::Socket: getaddrinfo: No address associated with hostname (SocketError)”

为失败响应捕获的 url 与通过的 url 之一不同。我会进一步研究。

更新:

dragonfly 初始化器指定了与失败的路径相同的路径,并且由于 url_host 覆盖了默认功能,我决定将其删除。

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

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

【问题讨论】:

  • 您能分享一些通过/失败的论据以供参考吗?谢谢。
  • 我们升级 gem 时取出了记录器。我现在将添加成功的 args,但直到明天我才能提供失败的 args 列表。
  • 看起来好像 url 附加了“-us-west-1”。这可能是我陷入困境的原因。
  • 嗯。可能是重定向失败(当连接和存储桶位于不同区域时发生)。其中一些有时可能有点不稳定。
  • @geemus 你对处理和/或调试这个问题有什么建议吗?

标签: ruby-on-rails ruby sockets excon


【解决方案1】:

我也有这个错误。就我而言,罪魁祸首要么是服务器负载(文件上传缓慢),要么是文件名中的特殊字符。由于您在低使用时间也会看到这一点,因此您可能需要查看人们上传的文件名。对我来说,错误通常发生在有人上传文件名中带有德语变音符号(ä,ö,ü,ß)的文件时。

所以请尝试上传一个名称中带有特殊字符的文件,并告诉我们这是否忠实地重现了错误。

如果是这种情况,则只需转义特殊字符或以不同的方式命名文件。以下是特殊字符问题的说明:https://github.com/markevans/dragonfly-s3_data_store/issues/6

【讨论】:

  • 我们在简单的获取请求以及文件上传/下载中看到了错误。有时错误很简单: SocketError: getaddrinfo: Name or service not known without the "Exconn" 部分如上所述。
  • 好的,如果您在简单的 GET 请求中遇到错误,我的解释不适合您的情况。除了以上我自己的经验所描述的之外,我不知道。对不起:(
【解决方案2】:

它可能无法解决您的问题,但我在两种情况下看到过类似的情况-

  1. 防火墙限制了我的系统配置的端口。
  2. 我的授权/身份验证凭据错误/过期。

【讨论】:

    猜你喜欢
    • 2016-01-10
    • 2013-10-02
    • 1970-01-01
    • 2019-06-30
    • 2023-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多