MQTT EMQ 服务挂了,重启才可以恢复正常使用

版本 : EMQ 4.3.5
问题:EMQ 在运行的时候,会偶现服务不可用的情况,查看日志会出现大量的 Parse failed for function_clause 报错,以及少量的Parse failed for frame_too_large 报错,但是服务重启之后就可以恢复正常使用了,解析报文失败也会导致服务不可用、连接超时么,请问这个是何种原因导致,该如何解决啊
以下是日志中出现的报错信息






看了连接数的配置,mqtt:wss:8084 的连接数才给了16 ,会是连接数不够造成的客户端连接超时嘛
还有一段这个报错
[error] Ranch listener ‘mqtt:wss:8084’ had connection process started with cowboy_tls:start_link/4 at <0.11584.527> exit with reason: {{case_clause,{error,closed}},[{cowboy_websocket,websocket_send_close,2,[{file,“cowboy_websocket.erl”},{line,640}]},{cowboy_websocket,websocket_close,3,[{file,“cowboy_websocket.erl”},{line,623}]},{proc_lib,wake_up,3,[{file,“proc_lib.erl”},{line,236}]}]}

你遇到的问题基本上和上面这个issues差不多。

解析报文失败不会导致服务不可用。只会影响到那个非法的客户端。

  • Parse failed for frame_too_large 这个是MQTT报文超过了最大限制,也只会影响到这个客户端。
    配置可见emqx.conf
##--------------------------------------------------------------------
## MQTT Protocol
##--------------------------------------------------------------------

## Maximum MQTT packet size allowed.
##
## Value: Bytes
## Default: 1MB
mqtt.max_packet_size = 1MB

会,默认配置中的最大连接数是设置是102400,你自己改成16的么?

## Examples: 8084, 127.0.0.1:8084, ::1:8084
listener.wss.external = 8084

## The path of WebSocket MQTT endpoint
##
## Value: URL Path
listener.wss.external.mqtt_path = /mqtt

## The acceptor pool for external MQTT/WebSocket/SSL listener.
##
## Value: Number
listener.wss.external.acceptors = 4

## Maximum number of concurrent MQTT/Webwocket/SSL connections.
##
## Value: Number
listener.wss.external.max_connections = 102400

这个是一开始部署的人,默认的配置 :joy:,目前问题已经解决了,8084连接数 配置给了1024,现在运行都相对稳定,谢谢!!!

1 个赞