环境:emqx版本:5.0.3,操作系统版本:centos7.6
问题:应用服务器发布16进制byte数组消息,订阅该消息的设备为DTU,一种连接TCP网络和串口设备的中间设备。消息发布后,DTU正常发送数据给串口设备,然后串口设备回复的消息通过DTU发布,应用服务器也能收到串口回复的消息,但是自此就开始阻塞,而且是很严重的阻塞住整个应用服务器进程,因为此时应用服务器不仅收不到DTU发过来的定时心跳信息,而且无法响应其他的web接口的HTTP请求。在随机的时间过后,可能几秒,也可能几分钟,应用服务器的mqtt连接会断开重连,然后一切又会恢复正常,除了有时候发生两种情况-应用发生GC问题:java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: GC overhead limit exceeded,或者redis连接超时:io.lettuce.core.RedisCommandTimeoutException: Command timed out after 1 min
ute(s)。
阻塞时的应用服务器侧和DTU侧的相关mqtt日志已抓取,服务器侧可以看到有超时相关的信息:msg: socket_force_closed, reason: keepalive_timeout
msg: emqx_connection_terminated, reason: {shutdown,takenover}。请帮忙分析超时前后发生的事件,看看是什么原因造成的。
已解决,阻塞不是emqx的原因,不需要处理了,谢谢。