BTW: do you think client can send max_concurrent_streams in the settings frame to tell the server to change this value? Nginx support it while h2o doesn't support it.
I tried to make 500 concurrent streams using a for loop. And when the file I request is big, it may come out such a exception below:
2015-10-21 21:33:03.397:DBUG:oejh.HTTP2Session:qtp1360875712-10: Removed HTTP2Stream@61009542#999{sendWindow=2147483647,recvWindow=65525,reset=false,CLOSED}
2015-10-21 21:33:03.397:WARN:oeju.Promise$Adapter:qtp1360875712-10:
java.lang.OutOfMemoryError: Java heap space
at java.nio.HeapByteBuffer.<init>(HeapByteBuffer.java:57)
at java.nio.ByteBuffer.allocate(ByteBuffer.java:335)
at org.eclipse.jetty.util.BufferUtil.allocate(BufferUtil.java:114)
at org.eclipse.jetty.io.MappedByteBufferPool.newByteBuffer(MappedByteBufferPool.java:70)
at org.eclipse.jetty.io.MappedByteBufferPool.acquire(MappedByteBufferPool.java:60)
at org.eclipse.jetty.io.ByteBufferPool$Lease.acquire(ByteBufferPool.java:71)
at org.eclipse.jetty.http2.generator.HeadersGenerator.generateHeaders(HeadersGenerator.java:78)
at org.eclipse.jetty.http2.generator.HeadersGenerator.generate(HeadersGenerator.java:54)
at org.eclipse.jetty.http2.generator.Generator.control(Generator.java:80)
at org.eclipse.jetty.http2.HTTP2Session$ControlEntry.generate(HTTP2Session.java:1028)
at org.eclipse.jetty.http2.HTTP2Flusher.process(HTTP2Flusher.java:247)
at org.eclipse.jetty.util.IteratingCallback.processing(IteratingCallback.java:241)
at org.eclipse.jetty.util.IteratingCallback.iterate(IteratingCallback.java:224)
at org.eclipse.jetty.http2.HTTP2Session.frame(HTTP2Session.java:607)
at org.eclipse.jetty.http2.HTTP2Session.frames(HTTP2Session.java:581)
at org.eclipse.jetty.http2.BufferingFlowControlStrategy.onDataConsumed(BufferingFlowControlStrategy.java:144)
at org.eclipse.jetty.http2.HTTP2Session$1.succeeded(HTTP2Session.java:173)
at Client7$1.onData(Client7.java:155)
at org.eclipse.jetty.http2.HTTP2Stream.notifyData(HTTP2Stream.java:362)
at org.eclipse.jetty.http2.HTTP2Stream.onData(HTTP2Stream.java:263)
at org.eclipse.jetty.http2.HTTP2Stream.process(HTTP2Stream.java:208)
at org.eclipse.jetty.http2.HTTP2Session.onData(HTTP2Session.java:168)
at org.eclipse.jetty.http2.parser.BodyParser.notifyData(BodyParser.java:103)
at org.eclipse.jetty.http2.parser.DataBodyParser.onData(DataBodyParser.java:138)
at org.eclipse.jetty.http2.parser.DataBodyParser.parse(DataBodyParser.java:103)
at org.eclipse.jetty.http2.parser.Parser.parseBody(Parser.java:186)
at org.eclipse.jetty.http2.parser.Parser.parse(Parser.java:110)
at org.eclipse.jetty.http2.HTTP2Connection$HTTP2Producer.produce(HTTP2Connection.java:156)
at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:162)
at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.execute(ExecuteProduceConsume.java:101)
at org.eclipse.jetty.http2.HTTP2Connection.onFillable(HTTP2Connection.java:96)
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:245)
when the client make a request for a small file, this exception may not be raised I am wondering is it because Jetty has some constraints on it.