【发布时间】:2013-03-05 18:16:41
【问题描述】:
我正在尝试寻找最有效的方法来测试数据库中的 300,000 多个 URL,以基本上检查这些 URL 是否仍然有效。 环顾该网站后,我发现了许多出色的答案,现在正在使用以下内容:
从文件中读取 URL.... 测试网址:
final URL url = new URL("http://" + address);
final HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
urlConn.setConnectTimeout(1000 * 10);
urlConn.connect();
urlConn.getResponseCode(); // Do something with the code
urlConn.disconnect();
将详细信息写回文件....
所以有几个问题: 1) 有没有更有效的方法来测试 URL 和获取响应码?
2) 最初我可以每分钟测试大约 50 个 URL,但在 5 分钟左右之后,事情真的变慢了 - 我想有一些资源我没有发布,但不确定是什么
3) 即使设置了连接超时,某些 URL(例如 www.bhs.org.au)也会导致上述内容挂起几分钟(当我有这么多 URL 要测试时不好),无论如何我可以收紧吗到这里了吗?
在此先感谢您的帮助,自从我编写任何代码以来已经有好几年了,我又要从头开始了 :-)
【问题讨论】:
-
stackoverflow.com/a/272918/166390 - 就缓解阻塞或增加吞吐量而言,请参阅线程或其他分布
-
我不太了解Java,但为了避免(3),我建议从多个线程进行连接。我会创建一个线程池,随时保持 20-50 个连接。这样,超时不会阻塞系统。
标签: java url httpurlconnection