【Java】记一次mqtt断开连接的线上问题

记一次mqtt断开连接的线上问题

初窥门径发布于 今天 08:38

使用的mqtt服务器:emqx,
使用的客户端连接:vertx,
日志大小有900M,我是用PilotEdit Lite打开的。

查看日志,发现有358条线程堵塞的异常
【Java】记一次mqtt断开连接的线上问题

查看具体信息,发现堵塞时间越来越长,从几秒到30多秒;
而我的mqttclient和 emqx服务器的心跳是30秒, 堵塞造成心跳没法维持,连接断开。
【Java】记一次mqtt断开连接的线上问题

查看阻塞位置代码:
【Java】记一次mqtt断开连接的线上问题

坑爹,发现之前的人写了个死循环
如果序号都递增,不会有问题
如果序号有间隔,如已存在两条记录,编号001、003、那么新插入第三条时,期望编码为003,但是003已存在,循环里没有递增编号,就会死循环。

javamqtt

阅读 42更新于 今天 08:40

本作品系原创,采用《署名-非商业性使用-禁止演绎 4.0 国际》许可协议

avatar

初窥门径

java程序猿

3 声望

2 粉丝

0 条评论

得票时间

avatar

初窥门径

java程序猿

3 声望

2 粉丝

宣传栏

使用的mqtt服务器:emqx,
使用的客户端连接:vertx,
日志大小有900M,我是用PilotEdit Lite打开的。

查看日志,发现有358条线程堵塞的异常
【Java】记一次mqtt断开连接的线上问题

查看具体信息,发现堵塞时间越来越长,从几秒到30多秒;
而我的mqttclient和 emqx服务器的心跳是30秒, 堵塞造成心跳没法维持,连接断开。
【Java】记一次mqtt断开连接的线上问题

查看阻塞位置代码:
【Java】记一次mqtt断开连接的线上问题

坑爹,发现之前的人写了个死循环
如果序号都递增,不会有问题
如果序号有间隔,如已存在两条记录,编号001、003、那么新插入第三条时,期望编码为003,但是003已存在,循环里没有递增编号,就会死循环。

以上是 【Java】记一次mqtt断开连接的线上问题 的全部内容, 来源链接: utcz.com/p/107981.html

回到顶部