I saw issues on boxes with the default of number of concurrent streams.

Lowering the default 100 value of the directive H2MaxSessionStreams solved it.




On Saturday 28/11/2015 at 10:29, Bert Huijben  wrote:



-----Original Message-----
From: Jan Ehrhardt [mailto:php...@ehrhardt.nl]
Sent: vrijdag 27 november 2015 22:35
To: dev@httpd.apache.org
Subject: Re: No H2 Window updates!

Bert Huijben in gmane.comp.apache.devel (Fri, 27 Nov 2015 20:04:14 +0100):

Well. it is not a regression, so can it be a show stopper? ?.
But I would like to see this fixed.

Curious: are you still testing this on Windows? If so, I guess you
compiled your own httpd. I tried to do the same a couple of days ago, but
ran into problems with Drupal7: the admin menu sometimes showed and
sometimes did not show at all. I could not lay my finger on what went
wrong.

Because I did not have the problems with Apachelounge's 2.4.18-dev at
https://www.apachelounge.com/viewtopic.php?t=6842 I checked out an
earlier
revision of the alpha branch:
| svn co -r 1715218
http://svn.apache.org/repos/asf/httpd/httpd/branches/2.4-http2-alpha

That revision compiled into a httpd with no problems. I am waiting now for
Stefan Eissing to finish his work on mod_http2.

BTW: did you switch to nghttp2 1.5.0 already?

Hi Jan,

No I didn't switch to nghttp2 1.5.0 yet. Thanks for reminding me to check if
there is a new version :)

The code I wrote for Serf code doesn't use nghttp2... After reading the specs I didn't think building on nghttp2 would win me a lot of time, and having multiple separate implementations of the same specification/RFC in the open source world would be a good thing. (Almost every recent H2 project
I see builds on top of nghttp2)


It is entirely possible that you hit the same problem as I did. (I'm
actually very surprised that I didn't hit this problem much earlier on. There is just one test in the Subversion testsuite that sends more than 64
Kbyte of request bodies over a single connection... I'll fix that)


But back to that problem... There is an easy workaround, which I used on the other side until two days ago: just making the H2 default window big enough
that you never get near it.

Just configure 'H2WindowSize' to be something like 1 GB and you probably never have to think about window updates. (The max allowed value is 2 GB -1)


This windowing allows the server to throttle incoming DATA from the other side, so servers like httpd really want to tune this dynamically. Note that headers and new requests are not counted to this limit, so on the server side it is really just request bodies... (Technically data on already closed streams should be counted too... but that is an implementation detail).


I remember reading that Stefan Eissing is away for some time ('Re: NOTICE: Intent to T&R 2.4.18' thread), so perhaps I should spend some time looking
at this myself.


Disabling that line that explicitly disables Window updates from the nghttp library, could be an easy fix... but it might require some compensating actions, like lowering the number of supported concurrent streams if that
comment is still up to date. Allowing up to 100 concurrent streams per
connection could be a bit high, although this really depends on what these
connections are used for. I don't know how to test against that 'gets
flooded' problem though, as that isn't measurable by itself.



And yes I build my own binaries for Subversion and all its dependencies...
All my scripting that I use for that is in
https://sharpsvn.open.collab.net/svn/sharpsvn/trunk/imports (username
'guest', no password). The default build doesn't build httpd, but if you use a Subversion dev build (copy dev-default.build to a directory one level above imports) it builds httpd. My scripts should work for VS2005 upto 2015 and require nant, and some python and perl versions. Everything else is
built from the scripts.

These same scripts drive the Subversion and Serf win32 buildbots that I maintain on ci.apache.org... and they also deliver the SharpSvn and 'Slik
Subversion Client' binaries.
(I currently explicitly don't deliver httpd itself or anything that depends
on that though)


Thanks [ / Groeten ;-)],

Bert


--
Jan



Reply via email to