1

私はプロプライエタリツールを使用して、ソフトウェアプロバイダーからソフトウェアをダウンロードしています。バックエンドでは、プレーンhttp(またはオプションでhttps)を使用してソフトウェアを取得するJavaアプリケーションです。

しかし最近、ダウンロードは失敗しています。ダウンロードツールのソースコードにアクセスできず、プロキシサーバーの背後にいることに注意してください。このツールは、実際のダウンロードを開始する前に、同じホストに複数回接続します。これらの接続は、多少遅いように見えますが、通常は成功します(もちろんこれは主観的です)。

ツールはいくつかのロギングを実行し、失敗すると次の例外が発生します。

java.net.SocketException: Connection reset
 at java.net.SocketInputStream.read(SocketInputStream.java:168)
 at java.io.BufferedInputStream.read1(BufferedInputStream.java:256)
 at java.io.BufferedInputStream.read(BufferedInputStream.java:317)
 at sun.net.www.MeteredStream.read(MeteredStream.java:116)
 at java.io.FilterInputStream.read(FilterInputStream.java:116)
 at sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.read(HttpURLConnection.java:2676)

Wiresharkを介して聞いていると、いくつかの独特の動作(または少なくとも私の訓練されていない目に特有の動作)が見られます。これが発生するまで、ダウンロードはしばらくの間「通常」続行されます。

  • サーバーは特定のパケットのACKを送信しません
  • プロキシサーバー(タイムアウト後)が再送信を実行します
  • サーバーがACKを送信します
  • 正確に3分(プロキシサーバーで設定されたタイムアウト)が経過するまでトラフィックは発生しません。プロキシはTCP RSTを送信し、上記のJavaエラーが発生します。

いくつかの追加情報:

1)ネットワーク上にないAmazonサーバーにもアクセスでき、問題なくダウンロードを実行します。異なるネットワーク上の少なくとも2人にダウンロードを試してもらいましたが、問題なく動作します。

2)同じサーバーとプロキシを使用して他のhttp / httpsサイトに問題なく接続します。これには、ときどき大量のダウンロードが含まれます。

4

1 に答える 1

0

これは、プロキシ サーバーのタイムアウト設定を微調整することで修正されましたが、正確に何が変更されたのか、なぜこの特定のサイトだけが影響を受けたのかについて、多くのフィードバックは得られませんでした。

于 2013-01-02T08:16:42.120 に答える