2016-01-11 5 views
0

При использовании базового запроса HTTP/2 GET Jetty, похоже, не использует повторно внутренние потоки. После того, как около 100 запросов, он бросает исключение ниже:HTTP/2 и Jetty: максимальное количество локальных потоков 100 превышено

Caused by: java.lang.IllegalStateException: Max local stream count 100 exceeded 
    at org.eclipse.jetty.http2.HTTP2Session.createLocalStream(HTTP2Session.java:614) 
    at org.eclipse.jetty.http2.HTTP2Session.newStream(HTTP2Session.java:430) 
    at org.eclipse.jetty.http2.client.http.HttpSenderOverHTTP2.sendHeaders(HttpSenderOverHTTP2.java:86) 
    at org.eclipse.jetty.client.HttpSender.send(HttpSender.java:204) 
    at org.eclipse.jetty.http2.client.http.HttpChannelOverHTTP2.send(HttpChannelOverHTTP2.java:73) 
    at org.eclipse.jetty.http2.client.http.HttpConnectionOverHTTP2.send(HttpConnectionOverHTTP2.java:52) 
    at org.eclipse.jetty.http2.client.http.HttpDestinationOverHTTP2.send(HttpDestinationOverHTTP2.java:36) 
    at org.eclipse.jetty.http2.client.http.HttpDestinationOverHTTP2.send(HttpDestinationOverHTTP2.java:26) 
    at org.eclipse.jetty.client.MultiplexHttpDestination.process(MultiplexHttpDestination.java:117) 
    at org.eclipse.jetty.client.MultiplexHttpDestination.send(MultiplexHttpDestination.java:59) 
    at org.eclipse.jetty.client.HttpDestination.send(HttpDestination.java:199) 
    at org.eclipse.jetty.client.HttpClient.send(HttpClient.java:538) 
    at org.eclipse.jetty.client.HttpRequest.send(HttpRequest.java:694) 
    at org.eclipse.jetty.client.HttpRequest.send(HttpRequest.java:647) 
    ... 8 more 

код я использую выглядит следующим образом:

HTTP2Client http2Client = new HTTP2Client(); 
http2Client.start(); 

HttpClient client = new HttpClient(new HttpClientTransportOverHTTP2(http2Client), ssl); 
     client.start(); 

for (int i = 0; i < 1000; i++) { 
    System.out.println(i); 
    ContentResponse response = client.GET("https://http2.akamai.com"); 
    System.out.println("response code: " + response.getStatus()); 
} 

Далее я пошел в исходный код Jetty, и он создает новый поток для каждый запрос. Почему это так?

Есть ли что-то, что мне не хватает? Это делает его довольно непригодным для запросов API и т. Д.

ответ

1

Вы попали в исправленную ошибку.

Обновите приложение Jetty 9.3.7.RC0 или новее.

Спасибо!

+0

Я обновился до 9.3.7.RC0, однако, я все еще сталкиваюсь с этой проблемой. – judepereira

+0

Игнорируйте это, выглядит, что мой IDEA кэшировал JAR при создании артефакта. – judepereira

+0

@sbordet: Итак, последний клиент Jetty HTTP/2 низкого уровня не создает новый поток для каждого запроса? –