Я использую Jetty-клиент для установления http2-соединений с серверами, на которых включена поддержка http2.Я могу видеть соединения открытия причала по мере необходимости и использовать для обмена данными между конечными точками.Для создания клиента http2 мой фрагмент выглядит следующим образом:
Security.addProvider(new OpenSSLProvider());
SslContextFactory sslContextFactory = new SslContextFactory(true);
sslContextFactory.setProvider("Conscrypt");
sslContextFactory.setProtocol("TLSv1.3");
HTTP2Client http2Client = new HTTP2Client();
http2Client.setMaxConcurrentPushedStreams(1000);
http2Client.setConnectTimeout(30);
http2Client.setIdleTimeout(5);
HttpClient httpClient = new org.eclipse.jetty.client.HttpClient(new HttpClientTransportOverHTTP2(http2Client), sslContextFactory);
httpClient.setMaxConnectionsPerDestination(20);
httpClient.setMaxRequestsQueuedPerDestination(100);
httpClient.start();
httpClient.addBean(sslContextFactory);
httpClient.start();
, а позже я использую созданный выше клиент для обмена запросами http2, например
Request request = httpClient.POST("my url goes here");
request.header(HttpHeader.CONTENT_TYPE, "application/json");
request.content(new StringContentProvider("xmlRequest PayLoad goes here","utf-8"));
ContentResponse response = request.send();
String res = new String(response.getContent());
. Мое требование:запросы мультиплексируются одновременно в один и тот же пункт назначения.Это происходит быстрее, пока нагрузка не станет меньше, но когда нагрузка начинает увеличиваться, время, необходимое для обработки запросов, также начинает увеличиваться (иногда в 10 раз).
В таком случае я хотел бы заставить клиент Jetty открыть несколько TCP-соединений и распределить нагрузку по разным сокетам, а не сжимать все в один и тот же открытый сокет.Я попробовал приведенные ниже настройки уже с другими значениями,
httpClient.setMaxConnectionsPerDestination(20);
httpClient.setMaxRequestsQueuedPerDestination(100);
, но безуспешно.
Является ли причал, соединяет ли соединение, когда в молнии открыто более одного соединения?Есть ли способ открыть несколько соединений TCP и распределить нагрузку так, чтобы время обработки не влияло на время пиковой нагрузки.
Причал - 9.4.15, Провайдер - Conscypt, JDK - jdk.18, OS - Ubuntu / Centos
Заранее спасибо