对于使用 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 请求的数量?
提前感谢您的帮助!
盛