Python中TCP连接的最大数量是多少?

3

我正在本地使用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个之后,会出现异常:

[Errno 10055] 由于系统缺少足够的缓冲区空间或队列已满,因此无法执行套接字操作

那么我该如何解决这个问题并最大化连接数呢?


1个回答

3
检查正在运行脚本的用户以及系统中的ulimitquota。可能需要修改/etc/security/limits.conf中的资源限制。
尝试运行ulimit -s unlimited
此外,ulimit -n将显示允许的最大打开文件描述符/套接字数。这也可能需要修改。
一些手册页和参考链接:

虽然问题没有具体说明,但完整的答案应该包括其他操作系统。 - OrangeDog

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接