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?

user207421
  • 305,947
  • 44
  • 307
  • 483
whi
  • 2,685
  • 6
  • 33
  • 40
  • Also see [How many socket connections possible?](https://stackoverflow.com/q/651665/608639) and [How many sockets can be created from a port?](https://stackoverflow.com/q/700594/608639) – jww Nov 18 '19 at 02:42

1 Answers1

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:

chown
  • 51,908
  • 16
  • 134
  • 170