在我的代码中,有一个构建 Futures 的循环,这很慢。构建 1 个 Future 大约需要数百毫秒。我只是在谈论设置 Future 对象而不是获取响应。这是代码:
while(settings.getCrawlerQueue().size() < settings.getCrawlerQueueSize()) {
Task task = taskQueue.poll();
task = setFutureInTask(assignment, task);
}
和setFutureInTask()
代码:
public Task setFutureInTask(String assignment, Task task) {
task.setParserAssignment(assignment);
switch(assignment){
case "stuff":
task.setFuture(asyncClientStandard
.prepareGet("http://"+task.getDomain())
.execute()
);
break;
[...]
我尝试了不同的 Java JDK 和版本,正如我阅读的一些东西中所建议的那样(找不到它:/),但这没有帮助。还尝试JDKAsyncHttpProvider
了而不是 default NettyAsyncHttpProvider
,它更快,但也提供了非常多的 Flase-Negatives (它似乎取消了非常(!)通常有效的域)。我注意到的是:我住在德国,德国 .de 域名的速度明显快于西班牙等其他国家的域名。
任何疯狂的猜测都将受到高度赞赏!:)
[EDIT]
只需切换到另一个 DNS 服务器即可解决问题。