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开发者_JAVA百科:
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?
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:
- ulimit
- quota
- limits.conf
- lsof
精彩评论