Во-первых, помните, что maxPoolSize
применяется к каждому пункту назначения. Поэтому, если вам нужны разные размеры пула, создайте разные HttpClient
для своих бэкэндов.
Тогда, если вы не работаете в стесненных условиях, я бы рекомендовал оставить значение maxWaitQueueSize
по умолчанию, которое равно -1
(неограниченный). Размер очереди в памяти должен быть относительно небольшим с учетом ожидаемой нагрузки.
Чтобы определить значение размера пула, вы можете использовать закон Литтла . Для поддержки пропускной способности 50 req / se c при среднем времени обслуживания 3 с требуется пул из 150 подключений.
Максимальное значение, которое вы можете установить для maxPoolSize
, зависит от конфигурации вашей системы. В частности, вам необходимо настроить максимальное количество дескрипторов открытых файлов.
В вашем случае я считаю, что вам следует избегать включения конвейерной передачи. Во-первых, не все HTTP-серверы поддерживают это правильно. Во-вторых, если время обслуживания варьируется от 0 до 3 секунд, ответ может быть задержан серверной частью, поскольку предыдущие запросы в конвейере еще не обработаны (блокировка заголовка строки).