Я оцениваю AsyncHttpClient для больших нагрузок (~ 1M HTTP-запросов). Для каждого запроса я хотел бы вызвать функцию обратного вызова с помощью AsyncCompletionHandler, который будет просто вставить результат в очередь блокировкиDoes AsyncHttpClient знает, сколько потоков выделяется для всех HTTP-запросов.
Мой вопрос: если я посылаю асинхронных запросов в сплошном цикле, сколько потоков будет ли AsyncHttpClient использовать? (Я знаю, что вы можете установить максимум, но, видимо, вы берете на себя риск потери запросов, я видел это here)
Я в настоящее время с помощью реализации Netty с этими версиями:
- асинхронного-клиентом -client v1.9.33
- Нетти v3.10.5.Final
Я не против использования других версий, если есть какие-либо оптимизации в более поздних версиях
EDIT:
Я прочитал, что Netty использует reactor pattern для реагирования на HTTP-ответы, что означает, что он выделяет очень малое количество потоков для работы в качестве селекторов. Это также означает, что количество выделенных потоков не увеличивается с увеличением объема запросов. Однако это противоречит необходимости устанавливать максимальное количество соединений.
Может ли кто-нибудь объяснить, что мне не хватает?
Заранее спасибо
Подсказка: HTTP-запросы не обязательно повторно используют одно и то же соединение;) –
@EranHarel не уверен, что понял подсказку, но теперь я думаю, что максимальное количество подключений означает количество открытых подключений, которое напрямую не влияет на количество потоков (так как один селектор слушает несколько сокетов), я нахожусь на правильном пути? – Gideon
Если вы не используете HTTP keep-alive, соединение не используется повторно, поэтому при отправке многих запросов на определенный хост или домен вы создадите много подключений (по одному на запрос). В некоторых случаях вы можете перегружать сайт/службу или блокироваться при наводнении. Вот почему у клиентов такая настройка. Несмотря на это, netty не будет увеличивать количество потоков независимо от количества одновременных запросов/соединений, которые вы создаете. –