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

3 投票
1 回答
7641 浏览
提问于 2025-04-17 04:12

我在本地使用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

检查一下 ulimitquota,这两个是跟你运行脚本的用户和环境有关的设置。你还可以看看 /etc/security/limits.conf 这个文件,它里面可能有一些资源限制,你可以考虑修改一下。

试试运行 ulimit -s unlimited 这个命令。

另外,运行 ulimit -n 可以查看允许打开的文件描述符或套接字的最大数量。这个数量也可能需要调整。


一些手册页面和参考链接:

撰写回答