Pet*_*ack 16 ruby sockets ruby-on-rails excon
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)
Run Code Online (Sandbox Code Playgroud)
错误发生在应用程序的任何地方.有时在没有远程连接时会看到错误. - 我无法再验证这一点.
我使用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]
Run Code Online (Sandbox Code Playgroud)
我遇到了几个让我相信excon gem需要更新的论坛.我将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_host会覆盖我决定删除它的默认功能.
# myapp/config/initializers/dragonfly.rb
...
url_host: 'mybucket.s3-us-west-1.amazonaws.com'
Run Code Online (Sandbox Code Playgroud)
这导致没有变化.仍然使用相同的URL,并且是唯一失败的URL.
我也有这个错误。就我而言,罪魁祸首要么是服务器负载(文件上传速度慢),要么是文件名中的特殊字符。由于您也会在低使用时间看到这种情况,因此您可能需要查看人们上传的文件名。对我来说,当有人上传文件名中包含德语变音符号(\xc3\xa4、\xc3\xb6、\xc3\xbc、\xc3\x9f)的文件时,通常会发生错误。
\n\n因此,请尝试上传名称中包含特殊字符的文件,并告诉我们这是否忠实地重现了错误。
\n\n如果是这种情况,只需转义特殊字符或以不同的方式命名文件即可。以下是特殊字符问题的描述: https: //github.com/markevans/dragonfly-s3_data_store/issues/6。
\n 归档时间: |
|
查看次数: |
1357 次 |
最近记录: |