CloseableHttpAsyncClient - количество запросов в секунду на скорости 10 кбит / с? - PullRequest
0 голосов
/ 25 июня 2019

У меня есть приложение, в котором я хотел бы отправлять не менее 100 тыс. HTTP-запросов в секунду с размером сообщения около 2 КБ «отдавать или брать».Но, похоже, я не могу посылать быстрее, чем 10 тыс. В секунду.

Я предварительно собрал все запросы, чтобы убедиться, что я не ограничиваю себя на этапе построения.Вот как выглядит отправляющая часть:

CloseableHttpAsyncClient client = HttpAsyncClients
        .custom()
        .setMaxConnTotal(1000)
        .setMaxConnPerRoute(1000)
        .build();

client.start();

ArrayList<Future<HttpResponse>> futures = new ArrayList<>();
ArrayList<HttpPost> requests = new ArrayList<>();

/* ... I build 100k requests ... */

for(HttpPost request : requests) {
  futures.add(client.execute(request, null));
}

/* ... record start time ... */

for(Future future : futures) {
  future.get();
}

/* ... print change since start time ... */

Я настроил MaxConnTotal, и после 1000 он не работает быстрее. Я также протестировал серверы разных размеров с ядрами в диапазоне от 4до 72, а скорость сети варьируется от 5 до 10 Гбит / с.Даже на этих 72-ядерных 10-гигабитных машинах, превышающих 1000, MaxConnTotal, похоже, не помогает.

Неважно, какого размера кажется машина.Большой или маленький, для отправки 100 000 запросов всегда требуется около 10 с.

Я также пытался установить значение ulimit выше и установить nofiles в /etc/security/limits.conf как неограниченное для * и root (и, конечно, перезагрузить компьютер).потом).

Чего мне не хватает?Почему я не могу выполнить 100 000 запросов в секунду на всем этом оборудовании с помощью клиента NIO http?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...