java - Ning 的 AsyncHttpClient 构建 Future 的速度太慢(在本例中)

标签 java asynchttpclient ning

在我的代码中,有一个循环构建 Future,这很慢。仅构建 1 个 Future 就需要大约数百毫秒。我只是在谈论设置 Future 对象,而不是获取 Reponse。代码如下:

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 来代替默认的 NettyAsyncHttpProvider ,它更快,但也提供了很多 Flase-Negatives (它似乎取消了非常(!)通常有效的域)。 我注意到的是:我住在德国,德国 .de 域名明显比西类牙等其他国家的域名快。

任何疯狂的猜测都将受到高度赞赏! :)

[EDIT]

只需切换到另一个 DNS 服务器即可解决该问题。

最佳答案

我在编写和试验 HTTP 负载测试插件时遇到了类似(如果不相同)的问题。名称解析似乎在创建 future 时同步发生,如果您的 DNS 缓存无法正常工作,您每次都要为整个 DNS 查找往返付费。

至于如何解决这个问题,很难说。我通常会切换到另一个不会显示此问题的网络接口(interface)。

关于java - Ning 的 AsyncHttpClient 构建 Future 的速度太慢(在本例中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24874275/

相关文章:

ssl - 宁异步http客户端如何接受任何证书

java - 如何使用 firebase android studio 创建登录名并使用电话号码注册?

java - Selenium:针对三种环境使用不同的 URL 运行自动化代码

java - 为什么 JTree 仅在创建 JTree 之前填充关联的 DefaultTreeModel 时才显示数据?

java - 在java中捕获面板中的击键

apache-spark - 由 async-http-client 引起的 Spark 中的 IllegalAccessError

android - loopj RequestHandle 在取消时崩溃

java - 用于 AsyncHttpClient 的 RestTemplate