17

Rails 4 - Ruby 2.2.2 - Amazon 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: 名前またはサービスが不明 (SocketError)」から「Excon::Error::Socket: getaddrinfo: ホスト名に関連付けられたアドレスがありません (SocketError)」になりました。

失敗した応答に対してキャプチャされた URL は、合格した URL のいずれかとは異なります。これをさらに調べます。

アップデート:

トンボのイニシャライザは、失敗したパスと同じパスを指定します。url_host はデフォルトの機能をオーバーライドするため、削除することにしました。

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

この結果、変化はありませんでした。同じ URL が引き続き使用され、失敗する唯一の URL です。

4

2 に答える 2

1

私もこのエラーがありました。私の場合、原因はサーバーの負荷 (ファイルのアップロードが遅い) か、ファイル名の特殊文字でした。これは使用率の低い時間帯にも見られるため、ユーザーがアップロードするファイル名を確認することをお勧めします。私の場合、誰かがファイル名にドイツ語のウムラウト (ä,ö,ü,ß) を含むファイルをアップロードしたときに、エラーが通常発生しました。

そのため、名前に特殊文字を含むファイルをアップロードしてみて、エラーが忠実に再現されるかどうかをお知らせください。

このような場合は、特殊文字をエスケープするか、ファイルに別の名前を付けてください。特殊文字の問題については、https ://github.com/markevans/dragonfly-s3_data_store/issues/6 で説明しています。

于 2016-12-30T18:37:17.370 に答える