Hi,

I've been using haproxy 1.6.1 to test the newly added unix domain socket
connector on the Jetty server.

However, under load testing I start to see messages like:

Connect() failed for backend frontend: no free ports.

If I only get a few of these messages, it does not appear to affect the
results. But eventually I get batches of these messages that appear
associated with failed responses.

I have written a test client to connect directly to the jetty unix domain
socket and it works fine with up to 20,000 simultaneous connections and
requests.  I'm only seeing problems via haproxy.

If I use TCP over localhost instead of unix domain socket to talk to the
backend, I get no problems at all.

I'm using ab to generate load and problems start occurring with concurrency
over 350:

ab -n 1000000 -c 500 -k http://localhost:8888/


My haproxy configuration is:
global
        tune.ssl.default-dh-param 8192
        maxconn 10000
        maxpipes 10000
        maxsslconn 10000

defaults
        mode tcp
        timeout connect 5000ms
        timeout client 50000ms
        timeout server 50000ms

listen frontend
        bind :8888
        bind :8843 ssl no-sslv3 crt ./cert.pem ciphers TLSv1.2
        #server backend 127.0.0.1:8080
        server backend /tmp/jetty.sock send-proxy-v2-ssl-cn


I've tried turning on debug to get more information, but I just get output
like:

000001ed:frontend.accept(0005)=013a from [127.0.0.1:53303]
000001ee:frontend.accept(0005)=0139 from [127.0.0.1:53302]
000001ef:frontend.accept(0005)=0138 from [127.0.0.1:53301]
000001f0:frontend.accept(0005)=0137 from [127.0.0.1:53300]
000001f1:frontend.accept(0005)=0136 from [127.0.0.1:53299]
000001f2:frontend.accept(0005)=0135 from [127.0.0.1:53298]
000001f3:frontend.accept(0005)=0134 from [127.0.0.1:53297]
Connect() failed for backend frontend: no free ports.
Connect() failed for backend frontend: no free ports.
Connect() failed for backend frontend: no free ports.
Connect() failed for backend frontend: no free ports.
000001b0:frontend.clicls[0177:03aa]
000001b0:frontend.closed[0177:03aa]
Connect() failed for backend frontend: no free ports.
Connect() failed for backend frontend: no free ports.
Connect() failed for backend frontend: no free ports.
Connect() failed for backend frontend: no free ports.
000001b1:frontend.clicls[0176:0177]
000001b1:frontend.closed[0176:0177]
Connect() failed for backend frontend: no free ports.
Connect() failed for backend frontend: no free ports.
Connect() failed for backend frontend: no free ports.
Connect() failed for backend frontend: no free ports.
Connect() failed for backend frontend: no free ports.
Connect() failed for backend frontend: no free ports.

Which is not saying anything to me.

So anybody know what resource "free ports" relates to in the unix domain
socket case?    Are there any other debug options to find out more about
what is happening.

I'm running on ubuntu 10.04 with a ulimit of 80000 FDs

cheers



-- 
Greg Wilkins <[email protected]> CTO http://webtide.com

Reply via email to