3

I am working in Python on localhost. I wrote a raw server just read TCP socket, say in port 50001.

Then I tried max client connections:

def rawMultiConn(threadnum = 10000):
    g_event = threading.Event()
    def threadfn():
        sockets = [socket.socket(socket.AF_INET, socket.SOCK_STREAM)
                   for i in range(threadnum)]
        for s in sockets:
            s.connect(('localhost', SERVER_PORT))
        g_event.wait()
        for s in sockets: s.close()

    t = threading.Thread(target = threadfn)
    t.start()
    g_event.set()
    t.join()

but after about 3000 connections, exception occurs:

[Errno 10055] An operation on a socket could not be performed because the system lacked sufficient buffer space or because a queue was full

So how can I resolve it and max the connection?

1

1 Answer 1

3

Check the ulimit and quota for the box and the user running the script. /etc/security/limits.conf may also contain resource restrictions that you might want to modify.

Try running ulimit -s unlimited.

Also, ulimit -n will show the max number of open file descriptors/sockets allowed. That may need modification as well.


Some man pages and reference links:

Sign up to request clarification or add additional context in comments.

1 Comment

While the question didn't specify, a complete answer would also include other operating systems.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.