Рассмотрите возможность использования Диспетчер соединений пула согласно документации:
PoolingHttpClientConnectionManager - более сложная реализация, которая управляет пулом клиентских соединений и можетобслуживать запросы на подключение от нескольких потоков выполнения.Соединения объединяются для каждого маршрута.Запрос на маршрут, для которого у менеджера уже есть постоянное соединение, доступное в пуле, будет обслуживаться арендой соединения из пула, а не созданием нового соединения.
Поэтому я бы рекомендовал изменитьВаш код, такой как:
PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager();
//configure it as per your reqiurements, i.e.
cm.setMaxTotal(5000);
cm.setDefaultMaxPerRoute(20);
CloseableHttpClient httpClient = HttpClients.custom()
.setConnectionManager(cm)
.build();
Также имейте в виду, что существует бесплатный инструмент с открытым исходным кодом для тестирования под названием Apache JMeter , который, в частности, использует Apache HttpComponents подкапот, так что вы можете использовать его для нагрузочного тестирования или заглянуть в базовую реализацию, если у вас есть сомнения.
Я бы порекомендовал пересмотреть ваш подход и использовать JMeter, поскольку при нагрузочном тестировании веб-приложений необходимо учитывать множество факторов (заголовки, файлы cookie, кэш, аутентификация, запросы AJAX, встроенные ресурсы и т. Д.).) и это может потребовать огромных усилий для правильной реализации всего.При необходимости вы можете создать / запустить тест JMeter через его API из кода Java, см. Пять способов запуска теста JMeter без использования JMeter GUI , чтобы получить более подробную информацию.