+1 to removing support of mom prefork. I'd prefer it still start and if
configured, with an [error] level alert in the logs and simply be disabled.
Server must start when module is loaded but not configured, e.g. in test
framework, IMO.

On Jul 6, 2017 10:31 AM, "Stefan Eissing" <stefan.eiss...@greenbytes.de>
wrote:

> Correction: websockets are not defined over h2. To make a more "real life"
> scenario:
>
> One example is a long polling request by a javascript component. During
> the long poll, the browser will not get other responses.
>
> More esoteric: when content filters (brotli, gzip) are in place,
> compression happens in the h2 worker thread. If one PUSHes such a resource,
> clients sometimes use h2 flow control to delay the sending of a response.
> This would deadlock the connection in a prefork model.
>
> These are complications not easily debugged or reproducible.
>
> > Am 06.07.2017 um 17:15 schrieb Stefan Eissing <
> stefan.eiss...@greenbytes.de>:
> >
> > Hej,
> >
> > I tried to gather some discussion about this. Should have polled this
> mailing list. You can read most of it here: https://github.com/icing/mod_
> h2/issues/142
> >
> > tl;dr
> >
> > I had several reports in the past of people being disappointed about h2
> performance, only to learn they were on prefork. Which means every request
> is processed serially (with static files being an exception, as long as no
> filters prevent this).
> >
> > In 2.4.26 I changed the (undocumented) default from 1 to 4 h2 workers,
> which brought us to the issue I linked. The easy fix is 'H2MaxWorkers 1' in
> the config and you have the pre-2.4.26 behaviour.
> >
> > Regardless of the discussion if the change in 2.4.26 was reasonable or
> not: it is not possible to map the prefork single-thread requirement on to
> HTTP/2. Not going to work. One long running request, one websocket opened,
> and your browser will stall.
> >
> > This is not a bug, it is the collision of the processing models.
> >
> > So, I think disabling it prevent user from shooting themselves in the
> foot. If you are on prefork, you'd want the 6 parallel HTTP/1.1
> connections, not h2.
> >
> > Does this make sense?
> >
> > Cheers,
> >
> > Stefan
> >
> > PS. Yes, I know that one /could/ make parallel processes work in prefork
> by placing the h2 dispatching in a parent process. If someone wants to
> implement that, be my guest.
> >
> >
> >> Am 06.07.2017 um 16:55 schrieb Bert Huijben <b...@qqmail.nl>:
> >>
> >>
> >>
> >>> -----Original Message-----
> >>> From: Jim Jagielski [mailto:j...@jagunet.com]
> >>> Sent: woensdag 5 juli 2017 18:49
> >>> To: dev@httpd.apache.org
> >>> Subject: Re: 2.4.27
> >>>
> >>> These are just the fixes/regressions noted in CHANGES:
> >>>
> >>> Changes with Apache 2.4.27
> >>>
> >>> *) mod_lua: Improve compatibility with Lua 5.1, 5.2 and 5.3.
> >>>    PR58188, PR60831, PR61245. [Rainer Jung]
> >>>
> >>> *) mod_http2: disable and give warning when mpm_prefork is
> >>> encountered. The server will
> >>>    continue to work, but HTTP/2 will no longer be negotiated. [Stefan
> >> Eissing]
> >>
> >> Can somebody point me to the reasoning behind this?
> >>
> >> I have this configuration on FreeBSD with older Httpd versions, and it
> works
> >> just fine for my limited load.
> >>
> >> Switching to a different model will require compiling more ports myself
> as
> >> the FreeBSD packaging system is optimized for this model.
> >>
> >>
> >> I do understand that there is a better mapping of http/2 streams with
> the
> >> more modern MPMs, but there must be a reason that it worked and no
> longer
> >> can be supported in the future. I assume this reason is already
> documented
> >> somewhere...
> >>
> >> Thanks,
> >>
> >>      Bert
> >>
> >>
> >
>
>

Reply via email to