Search code examples
pythontcpconnection

Maximum number of TCP connections in Python?


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?


Solution

  • 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: