Java を使用して http get を送信することに関して、非常に一般的な質問をしたことをお詫びしなければなりません。(スループットは多くの影響を受ける可能性があります。)
Java でインターネットを介して単一のクライアントから単一のリモート ホストへの http get 要求がいくつあるかを調査するように依頼されました。
リモート ホストは、クライアントが送信する HTTP get 要求と同じ数を処理できると仮定します。
基本的に、私のアプローチは、次の Java コードをできるだけ多くのスレッドで実行することです。private void send(int i) throws IOException {
final String urlStr = String.format(urlTemplate, host, i);
URL urlObj = new URL(urlStr);
HttpURLConnection con = (HttpURLConnection) urlObj.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("User-Agent", USER_AGENT);
con.getResponseCode();
con.disconnect();
}
10 個以上のスレッドがある場合、java.net.NoRouteToHostException: Cannot assign requested address が発生します
グーグルで調べた結果、/proc/sys/net/ipv4/tcp_tw_reuse を 1 に設定すると、20 スレッドで上記の NoRouteToHostException を回避できることがわかりました。
20 のスレッドで、1 つのクライアントからリモート ホストに約 2000 の http get 要求を送信できるようになりました。
単一のクライアントから送信できる http get リクエストの数を増やすようなクライアント側の変更はありますか?
よろしくお願いいたします。
シング