httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Bert Huijben" <>
Subject RE: No H2 Window updates!
Date Sat, 28 Nov 2015 09:29:19 GMT

> -----Original Message-----
> From: Jan Ehrhardt []
> Sent: vrijdag 27 november 2015 22:35
> To:
> 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
> I checked out an
> earlier
> revision of the alpha branch:
> | svn co -r 1715218
> 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 (username
'guest', no password). The default build doesn't build httpd, but if you use
a Subversion dev build (copy 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 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 ;-)],


> --
> Jan

View raw message