MQTT上的WinError 10061

问题描述

当我通过使用线程构建大约5000个MQTT客户端时,出现如下错误消息[WinError 10061]。

import paho.mqtt.client as mqtt
import threading

def client(id):
    subscriber=mqtt.Client(id)
    subscriber.on_connect=on_connect
    subscriber.on_message=on_message
    subscriber.connect('192.168.233.142',keepalive=20)
    subscriber.loop_forever()

def on_connect(subscriber,userdata,flags,rc):
    if int(subscriber._client_id.decode())%1000==0:
        logging.info('連接伺服器')

def on_message(subscriber,msg):
    message=str(loads(msg.payload.decode()))
    if int(subscriber._client_id.decode())%1000==0:
        logging.info(message)


for i in range(5001):
    threading.Thread(target=client,args=(str(i),)).start()
    sleep(0.01)

在其他程序中使用ZMQ.SUB之前,我已经看到此错误,但是客户端数量超过10000。

连接过多是否会导致此问题?

如果为true,是什么使这两个软件包有巨大的区别?

解决方法

Google说“ Win10061”是一个“拒绝连接”错误...。因此,请查看您的MQTT Broker的日志文件,并查看其内容....即发生错误的地方。

大多数MQTT代理应该能够处理5000个连接,但是也许启动时它们之间的距离太近,而MQTT代理却太忙于尝试更新其客户表并推出CONACKs?

错误在哪里出现?