ホームページ >バックエンド開発 >Golang >大陸全体で Go の「http.Get」リクエストが「ピアによる接続リセット」エラーで失敗するのはなぜですか?

大陸全体で Go の「http.Get」リクエストが「ピアによる接続リセット」エラーで失敗するのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-19 20:26:10776ブラウズ

Why Do Go's `http.Get` Requests Fail with

Go の http.Get、同時実行、およびピアによる接続のリセット

質問:

Web ページを効率的にダウンロードするために Go ルーチンとチャネルを利用しているときに、一部のリクエストが「接続がリセットされました」というメッセージで失敗するのはなぜですか?別の大陸のサーバーから実行すると、「peer」エラーが発生しますか?

回答:

「peer によって接続がリセットされました」エラーは、リモート サーバーが意図的または非自発的であることを示します。リソース制限または過剰な接続開始により、接続が終了されました。この問題に対処するには:

1.同時実行レベルの最適化:

多数の並列接続 (1000 ~ 2000) を開始する代わりに、さまざまな同時実行レベルを試して、最も効率的な数を決定します。同時実行性が高すぎると、接続がリセットされる可能性があります。

2. Set Transport.MaxIdleConnsPerHost:

同時実行レベルに対応するように Transport.MaxIdleConnsPerHost 値を構成します。この値が同時接続の数より小さい場合、リクエストのたびにサーバー接続が閉じられ、再度開く必要がある可能性があります。この繰り返しの開閉プロセスによって進行が遅くなり、サーバー接続の制限を超える可能性があります。

3.接続開始の遅延:

MaxIdleConnsPerHost を適切に設定しても問題が解決しない場合は、サーバーからの接続リセットのトリガーを避けるために、接続開始の間にわずかな遅延を導入することを検討してください。

以上が大陸全体で Go の「http.Get」リクエストが「ピアによる接続リセット」エラーで失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。