Python中最大TCP连接数是多少?
我在本地使用Python编程,写了一个简单的服务器,它通过TCP套接字在50001端口上读取数据。
然后我尝试连接尽可能多的客户端:
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()
但是大约连接到3000个客户端后,就出现了异常:
[错误号 10055] 无法在套接字上执行操作,因为系统缺少足够的缓冲区空间,或者队列已满
那么我该如何解决这个问题,才能增加连接数呢?
1 个回答
3
检查一下 ulimit
和 quota
,这两个是跟你运行脚本的用户和环境有关的设置。你还可以看看 /etc/security/limits.conf
这个文件,它里面可能有一些资源限制,你可以考虑修改一下。
试试运行 ulimit -s unlimited
这个命令。
另外,运行 ulimit -n
可以查看允许打开的文件描述符或套接字的最大数量。这个数量也可能需要调整。
一些手册页面和参考链接: