httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Luca Toscano <toscano.l...@gmail.com>
Subject Re: mod_proxy_fcgi and flush
Date Mon, 10 Jul 2017 09:42:17 GMT
Hi Rüdiger,

2017-07-10 8:31 GMT+02:00 Plüm, Rüdiger, Vodafone Group <
ruediger.pluem@vodafone.com>:

>
>
>
>
> *Von:* Luca Toscano [mailto:toscano.luca@gmail.com]
> *Gesendet:* Samstag, 8. Juli 2017 09:52
> *An:* Apache HTTP Server Development List <dev@httpd.apache.org>
> *Betreff:* Re: mod_proxy_fcgi and flush
>
>
>
> Hi Jacob, Helmut!
>
>
>
> 2017-07-06 20:54 GMT+02:00 Jacob Champion <champion.p@gmail.com>:
>
> On 07/06/2017 11:13 AM, Jim Jagielski wrote:
>
> works 4 me...
>
>
> Doesn't for me. E.g. with a script like
>
> <?php
>   print("hi!\n")
>   flush();
>   sleep(1);
>   print("hi!\n");
> ?>
>
> it takes 1 second to receive a single chunk with both lines in it.
>
> From a quick skim I assume this is because we don't use nonblocking
> sockets in the proxy implementation. (There's even a note in mod_proxy_fcgi
> that says, "Yes it sucks to [get the actual data] in a second recv call,
> this will eventually change when we move to real nonblocking recv calls.")
>
>
>
> Quick check from my side too, so not sure if it makes sense. IIUC the
> comment is about getting all the headers from the FCGI backend
> (get_data_full(..., AP_FCGI_HEADER_LEN)), then get the response body in
> another one (the [actual data]).
>
>
>
> I checked mod_fcgi as Helmut suggested and it seems to me that the -flush
> feature is a simple "flush every data that you receive", so I tested the
> following patch with Jacob's php example code and it seems doing what
> Helmut asked (please correct me if I am wrong).
>
>
>
> Caveat: I had to set output_buffering = Off in my php-fpm's php.ini config
> file.
>
>
>
> http://home.apache.org/~elukey/httpd-2.4.x-mod_proxy_
> fcgi-force_flush.patch
>
>
>
> Flushing unconditionally is a bad idea performance wise. Please have a
> look how ajp solved this issue:
>
>
>
> https://svn.apache.org/r327185
>
> https://svn.apache.org/r384580
>
> https://svn.apache.org/r390210
>
> https://svn.apache.org/viewvc/httpd/httpd/trunk/modules/
> proxy/mod_proxy_ajp.c?r1=325879&r2=390210
>
>
>
> Hint: The above diff contains further unrelated changes.
>
>
>
Definitely, I added that quick and dirty patch to show my idea, really far
from being ready for a commit :)
Will review the commits that you posted, thanks!

Luca

Mime
View raw message