[prev in list] [next in list] [prev in thread] [next in thread] 

List:       haproxy
Subject:    =?UTF-8?B?UmU6IGluIHVyaSBiYWxhbmNlLCBo?= =?UTF-8?B?dHRwLWtlZXAtYWxpdmUgYnJva2Vu?=
From:       Seri <seri0528 () naver ! com>
Date:       2014-04-30 9:21:40
Message-ID: 5ad8d4279e82111738cebf6ed1cd3f1 () cweb11 ! nm ! nhnsystem ! com
[Download RAW message or body]

[Attachment #2 (text/plain)]

Hi,

This issue is reproduced in this environment( frontend(http-keep-alive), backend(http-server-close) ).
In this environment(frontend(http-server-close), backend(http-server-close)), this works well.

Regards,

Seri

-----Original Message-----
From: "Willy Tarreau"<w@1wt.eu> 
To: "Cyril Bonté"<cyril.bonte@free.fr>; 
Cc: "Seri"<seri0528@naver.com>; "Lukas Tribus"<luky-37@hotmail.com>; "HAProxy"<haproxy@formilux.org>; 
Sent: 2014-04-30 (수) 18:10:04
Subject: Re: in uri balance, http-keep-alive broken

Hi again,

On Wed, Apr 30, 2014 at 07:59:11AM +0200, Willy Tarreau wrote:
> > OK, this time I think I could understand your issue and reproduce it.
> > The minimal setup I've used :
> >   defaults
> >     mode http
> > 
> >   listen test :80
> >     balance url_param q
> >     hash-type consistent
> > 
> >     server s demo.1wt.eu:80
> > 
> > This was introduced between 1.5-dev22 and 1.5-dev23 with this commit :
> > BUG/MEDIUM: http: don't start to forward request data before the connect
> > http://haproxy.1wt.eu/git?p=haproxy.git;a=commit;h=80a92c02f478dc1b836e0c97c891875437fc54da
> > 
> > Moreover, during my tests haproxy took 100% cpu after the second request 
> > was sent to the persistent connection.
> 
> Ah that's very interesting. I remember another report of 100% CPU one or
> two weeks ago that I don't think we could diagnose.
> 
> > It's late now so I can't analyze it more precisely tonight but I think 
> > it can be easily fixed now.
> 
> Yes, I'm taking care of this now. Thanks for the bisect!

Unfortunately, I found no way to reproduce the issue, either with master
nor with Seri's version (a631fc8).

Cyril, could you please add a printf() inside the if MSGF_WAIT_CONN in
http_request_forward_body() :

printf("ra=%d req=%s res=%s reqf=%08x repf=%08x, reqb=%08x resb=%08x\n",
       !!(s->rep->flags & CF_READ_ATTACHED),
       http_msg_state_str(txn->req.msg_state), http_msg_state_str(txn->rsp.msg_state),
       txn->req.flags, txn->rsp.flags,
       s->req->flags, s->rep->flags);

I suspect that some error condition is not properly handled when going to the
missing_data block, but I can't imagine which one.

Initially I thought it would be something like the READ_ATTACHED flag not
being set on reused connections, but it is properly set, so I remain a bit
confused.

Willy






[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic