每秒轮询 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 请求可能会减少发回的数据量,从而允许您使用更少的带宽,加快查询速度。