On Sun, Sep 30, 2018 at 10:16:55PM +0200, PiBa-NL wrote: > Hi Willy, > Op 30-9-2018 om 20:38 schreef Willy Tarreau: > > On Sun, Sep 30, 2018 at 08:22:23PM +0200, Willy Tarreau wrote: > > > On Sun, Sep 30, 2018 at 07:59:34PM +0200, PiBa-NL wrote: > > > > Indeed it works with 1.8, so in that regard i 'think' the test itself is > > > > correct.. Also when disabling threads, or running only 1 client, it > > > > still > > > > works.. Then both CumConns CumReq show 11 for the first stats result. > > > Hmmm for me it fails even without threads. That was the first thing I > > > tried when meeting the error in fact. But I need to dig deeper. > > So I'm seeing that in fact the count is correct if the server connection > > closes first, and wrong otherwise. In fact it fails similarly both for > > 1.6, 1.7, 1.8 and 1.9 with and without threads. I'm seeing that the > > connection count is exactly 10 times the incoming connections while the > > request count is exactly 20 times this count. I suspect that what happens > > is that the request count is increased on each connection when preparing > > to receive a new request. This even slightly reminds me something but > > I don't know where I noticed something like this, I think I saw this > > when reviewing the changes needed to be made to HTTP for the native > > internal representation. > > > > So I think it's a minor bug, but not a regression. > > > > Thanks, > > Willy > > Not sure, only difference between 100x FAILED and 100x OK is the version > here. Command executed and result below. > > Perhaps that's just because of the OS / Scheduler used though, i assume your > using some linux distro to test with, perhaps that explains part of the > differences between your and my results..
I find this strange. Your config contains a comment about the length converter missing from 1.8 so I had to change it to use the deny part on 1.8. It happens that using deny here precisely is what fixed the problem for me the first time. I simplified it this way to run a manual test : global stats socket /tmp/sock1 mode 666 level admin #nbthread 3 log 127.0.0.1:5514 local0 #nokqueue defaults mode http option dontlog-normal log global option httplog timeout connect 3s timeout client 4s timeout server 15s frontend fe1 bind 127.0.0.1:8001 acl donelooping hdr(TEST) -m len 10 http-request set-header TEST "%[hdr(TEST)]x" use_backend b2 if donelooping default_backend b1 backend b1 server srv1 127.0.0.1:8001 frontend fe2 bind 127.0.0.1:8002 default_backend b2 backend b2 server srv2 127.0.0.1:8000 Then I test it this way and got the same results on all versions : $ echo -e "GET / HTTP/1.1\r\n\r\n"|nc 0 8001 $ echo show info | socat - /tmp/sock1 | grep Cum CumConns: 11 CumReq: 21 CumSslConns: 0 $ echo -e "GET / HTTP/1.1\r\nconnection: close\r\n\r\n"|nc 0 8001 $ echo show info | socat - /tmp/sock1 | grep Cum CumConns: 11 CumReq: 11 CumSslConns: 0 Regards, Willy