Ning AsyncHttpClient строит фьючерсы слишком медленно (в данном случае)

В моем коде есть цикл, который строит фьючерсы, что очень медленно. Чтобы построить всего 1 Будущее, требуется около сотен миллисекунд. Я просто говорю о настройке объекта 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 вместо NettyAsyncHttpProvider по умолчанию, что намного быстрее, но также дает очень много Flase-Negatives (кажется, отменяет очень (!) часто действительные домены). Что я заметил, так это то, что я живу в Германии, и немецкие домены .de заметны быстрее, чем домены из других стран, таких как Испания.

Любая дикая догадка высоко ценится! :)

[EDIT]

Простое переключение на другой DNS-сервер решило проблему.


person Crayl    schedule 21.07.2014    source источник
comment
Я лично не тестировал асинхронный HTTP-клиент, но пробовали ли вы koush's AndroidAsync? ссылка   -  person The Nomad    schedule 22.07.2014


Ответы (1)


Я столкнулся с похожей (если не идентичной) проблемой при написании и экспериментировании с моим плагином для нагрузочного теста HTTP. Похоже, что разрешение имени происходит синхронно при создании будущего, и если ваше кэширование DNS не работает должным образом, вы каждый раз платите за полный цикл поиска DNS.

Что касается того, как исправить эту проблему, очень трудно сказать. Обычно я просто переключался на другой сетевой интерфейс, который не показывал этой проблемы.

person Marko Topolnik    schedule 21.07.2014
comment
Поиск DNS туда и обратно имеет большой смысл, в настоящее время у моего интернет-провайдера есть проблема с DNS. Что именно вы подразумеваете под переключением на другой сетевой интерфейс? - person Crayl; 22.07.2014
comment
В моем случае у меня есть возможность пройти через корпоративную сеть или через WiFi с прямой линией DSL. - person Marko Topolnik; 22.07.2014
comment
Помогло простое переключение DNS-серверов :D - person Crayl; 22.07.2014