应用服务端因使用mqttV3客户端,出现UDP端口占用过多,导致服务器网络异常

错误报告

因端口占用过多,导致应用服务器网络异常,甚至连本地回路都无法ping通,如下图所示。
1668132852547

UDP端口占用情况如下

占用总量(包括两条TCP6的占用)
image

应用服务器的连接句柄参数如下
1668133303827

EMQX后台仪表盘数据如下


环境

  • EMQX 版本:v5.0
  • 操作系统版本:Debian 11
  • MQTT客户端版本: org.eclipse.paho.client.mqttv3:1.2.4
  • 服务器情况:MQTT服务器两台(集群)、应用服务器两台(集群)

重现此问题的步骤

  1. 启动后端服务1、后端服务2
  2. 模拟一千台设备各自订阅对应的设备ID为值的话题,并每隔一分钟发送一次信息

出现的问题

过一段时间后,就会出现UDP端口占用过多,导致应用服务器网络异常;

需要的帮助

目前思路:

  1. 优化MQTT客户端源码(优化端口复用或者是端口回收)
  2. 提高操作系统的内核设置,扩宽网络资源的使用上限;

目前暂无有效的解决办法,请教各位大佬帮助。

你使用的是 MQTT-SN 协议?

仍旧是MQTT协议

MQTT 使用的是 TCP,不会占用 UDP 端口的

可是,我一旦将MQTT服务关闭后,在应用服务器就会看到UDP端口占用变少,甚至不占用了

你那个是java 进程占用的udp吧。mqtt服务不是java程序。估计是否是你其他业务对接的程序占用了

嗯嗯,已经排查出来了。是忘记关闭调用NTP时间的客户端(UDP协议通信) :joy: :joy:
谢谢官方的解答!!