gpt4 book ai didi

ruby-on-rails - 为什么我会出现间歇性的 Excon::Error::Socket: getaddrinfo: No address associated with hostname (SocketError)?

转载 作者:数据小太阳 更新时间:2023-10-29 06:35:56 40 4
gpt4 key购买 nike

Rails 4 - Ruby 2.2.2 - 亚马逊 AWS S3 - 蜻蜓 1.0.12 - dragonfly-s3_data_store 1.2 - fog-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,并且是唯一失败的 url。

最佳答案

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

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

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

关于ruby-on-rails - 为什么我会出现间歇性的 Excon::Error::Socket: getaddrinfo: No address associated with hostname (SocketError)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38728107/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com