0

对于使用 Java 发送 http get 的问题,我必须道歉。(吞吐量可能会受到许多因素的影响。)

我被要求调查有多少 http get 请求从单个客户端到 Java 中的 Internet 上的单个远程主机。

让我们假设远程主机可以处理客户端发送给它的尽可能多的 http get 请求。

基本上,我的方法是在尽可能多的线程中运行以下 Java 代码。私人无效发送(int i)抛出 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();

} 

如果我有十个或更多线程,我会得到 java.net.NoRouteToHostException:无法分配请求的地址

经过一番谷歌搜索,我发现将 /proc/sys/net/ipv4/tcp_tw_reuse 设置为 1,有助于解决上述 NoRouteToHostException 异常,有 20 个线程。

使用 20 个线程,现在我可以从单个客户端向远程主机发送大约 2000 个 http get 请求。

客户端是否有任何其他更改会增加我可以从单个客户端发送的 http get 请求的数量?

提前感谢您的帮助!

4

0 回答 0