使用 Java 每秒轮询 x 个 URL

使用 Java 每秒轮询 x 个 URL

每秒轮询 10,000 个 URL 是否可行?我确实会考虑以下代码的线程:

for (int i = 0; i < 10000; i++) {
    Executors.newScheduledThreadPool(10).scheduleWithFixedDelay(new Runnable() {
        @Override public void run() {
            // Poll URL here
        }
    }, i, 1000, TimeUnit.MILLISECONDS);
}

我确实通过这种方式打开了与 URL 的连接(阅读完后我会关闭它):

HttpURLConnection  connection = (HttpURLConnection) new URL("https://stackoverflow.com").openConnection();
connection.connect();

然后,我读取输出流的数据:

InputStream inputStream = connection.getInputStream();

然后,我读取输入流并关闭HttpURLConnection。

每秒轮询 200 个 URL 时,一切都运行正常。轮询 400 多个 URL 时,一切都会停滞。连接到 URL 需要 20-30 秒。

我确实在自己的电脑(不是服务器)上使用 Eclipse 在 Tomcat 上进行了测试。当连接需要很长时间时,我甚至无法在浏览器中打开网页。该脚本使用大约 20-30 Mbps 的速度,而我的电脑上的互联网最高速度为 90 Mbps。

如果您有任何建议,我非常乐意听到并尝试。

答案1

使用 HEAD 请求可能会减少发回的数据量,从而允许您使用更少的带宽,加快查询速度。

相关内容