httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jeff Trawick <traw...@gmail.com>
Subject Re: Fixing UDS in trunk/2.4 proposal
Date Sun, 11 Aug 2013 12:30:12 GMT
On Sat, Aug 10, 2013 at 12:30 PM, Jeff Trawick <trawick@gmail.com> wrote:

> On Sat, Aug 10, 2013 at 11:32 AM, Jim Jagielski <jim@jagunet.com> wrote:
>
>> +1... By the way, I'm working on a minor patch that works around
>> that "stupid" encoding of '/' requirement...
>>
>
> Did you give any thought to bypassing the normal proxy parsing altogether?
>
> For mod_authnz_fcgi I started by using a copy of ap_proxy_canon_netloc()
> to parse the backend address, but I think I'll just use a few regexes
> (literal IPv6 address+port, any other address+port, and eventually socket=
> when AF_UNIX is implemented).  I don't have access to proxy APIs and
> there's just too much baggage with what ap_proxy_canon_netloc() has to do
> for proxy to bring it along only for fcgi addresses.
>

Another thought...  Socket paths should be passed through
 ap_runtime_dir_relative(), right?

>
>
>
>> On Fri, Aug 09, 2013 at 03:51:20PM -0500, Daniel Ruggeri wrote:
>> > So I'm tasked with making httpd hold its own weight better against nginx
>> > as a reverse proxy to a local service. Unfortunately, nginx supports UDS
>> > and we don't quite yet. I've come across a bug that seems easy enough to
>> > fix, but I am wondering if there's a better way. Thoughts are welcome.
>> >
>> > With the currently proposed UDS support in mod_proxy, first requests
>> > always seem fine but subsequent requests for the worker fail (attempted
>> > DNS lookup when none should be done). I wouldn't have +1'ed had I
>> > realized this at the time, but I have a proposed fix...
>> >
>> > --- httpd-2.4.6-UDS/modules/proxy/proxy_util.c  2013-08-09
>> > 15:12:23.000000000 -0500
>> > +++ httpd-2.4.6/modules/proxy/proxy_util.c      2013-08-09
>> > 15:15:33.000000000 -0500
>> > @@ -2127,7 +2127,7 @@
>> >       */
>> >
>> >      if (!conn->hostname || !worker->s->is_address_reusable ||
>> > -        worker->s->disablereuse || strncmp(conn->hostname, "socket=",
>> > 7) == 0) {
>> > +        worker->s->disablereuse) {
>> >          if (proxyname) {
>> >              conn->hostname = apr_pstrdup(conn->pool, proxyname);
>> >              conn->port = proxyport;
>> >
>> > I haven't spent a ton of time on this so I'm wondering... This seems
>> > simple enough, but isn't there a place we could do this once to avoid
>> > having to execute the same logic (substring and path decode) on all
>> > subsequent requests? I'd also much rather not have to do a string
>> > comparison on all subsequent hits...
>> >
>> > If I don't hear anything otherwise, I'll just commit this and add it to
>> > the backport proposal next week or so
>> >
>> >
>> > P.S.
>> > My simple tests with 100 concurrent users for a total of 1,000,000
>> > requests yielded the following numbers (with the above patch applied).
>> > The backend supports about 20k requests/sec. This seems to be a mighty
>> > compelling case for UDS...
>> >
>> > nginx UDS: 16001.28
>> > nginx UDS: 18138.94
>> > nginx UDS: 15499.64
>> >
>> > Apache UDS: 16348.70
>> > Apache UDS: 14580.92
>> > Apache UDS: 15211.97
>> >
>> > Apache TCP: 11859.46
>> > (only got one in)
>> >
>> > --
>> > Daniel Ruggeri
>>
>> --
>>
>> ===========================================================================
>>    Jim Jagielski   [|]   jim@jaguNET.com   [|]   http://www.jaguNET.com/
>>         "Great is the guilt of an unnecessary war"  ~ John Adams
>>
>
>
>
> --
> Born in Roswell... married an alien...
> http://emptyhammock.com/
>



-- 
Born in Roswell... married an alien...
http://emptyhammock.com/

Mime
View raw message