emqx.log.1中出现大量报错shutdown,tcp_closed报错,是不是哪边配置有问题

版本如下:
image

报错如下:


2023-11-10T15:23:43.716066+08:00 [error] supervisor: ‘esockd_connection_sup - <0.1838.0>’, errorContext: connection_shutdown, reason: {recv_proxy_info_error,tcp_closed}, offender: [{pid,<0.29450.24>},{name,connection},{mfargs,{emqx_connection,start_link,[[{deflate_options,},{max_conn_rate,1000},{active_n,1000},{zone,‘external-1’},{proxy_address_header,<<>>},{proxy_port_header,<<>>},{supported_subprotocols,}]]}}]

配置如下:

external端口接了阿里云的nlb

recv_proxy_info_error, tcp_closed 意思是 TCP 连接建立之后,正在等待客户端发送 Proxy Protocol 头,但客户端直接断开了连接。看起来是因为客户端(这里应该是 LB)断开了连接导致的打印。

最可能的原因是 LB 在做端口探活,探活时并没有携带 Proxy Protocol 头部。这时本不应该打印错误日志,我们在 4.4.x 晚一些的版本已经修复了这个问题,如果可能的话建议你升级到 4.4.19. (企业版最新是 4.4.22)。

好的,我们稍后再尝试压测4.4.x的新版本
单台8c/32g的emqx服务,使用tcp连接达到25w左右连接数就上不去了,手动使用mqttx也无法连接,我们使用的是社区版,请问连接数有限制吗

EMQX 开源版本身对于连接数没有限制。
但我们曾遇到过:

MQTT 的 TCP 连接需要经过代理时,因为代理软件/代理服务的限制,不能有更多 TCP 连接的情况

希望能对你有帮助。

当我们增加一个tcp端口后依然可以连接,但是上限还是25w,证明和代理无关

连接数到 25w 之后,再启动新连接有什么报错?

  • 可以 trace 一个 clientid,然后用这个 clientid 启动新连接看看报错信息。
  • 在客户端侧抓tcp 报文看看有没有什么异常
  • 在 EMQX 所在机器/节点上,新建几个连接看看是什么情况

tcpdump抓到的包,看起来并没有异常


单个端口的上限依然停留在250144

系统配置如下:

image

Hi,可以把日志及 tcpdump 文件私信发我调查下

image


发现emqx打开的文件句柄数超过了200w,25w连接,使用了1226w,和这个有关系吗

目前已解决(和阿里云使用的nlb ip连接数限制有关)