Known Issues in EMQX 6.3
6.3.1
| Since version | Issue | Workaround | Status |
|---|---|---|---|
| 6.0.0 | Throttled inbound traffic on TCP listeners with tcp_backend = socket and a small tcp_options.recbufA TCP listener configured with tcp_backend = socket (the default on Linux and macOS since 6.3.0) together with a tcp_options.recbuf below the operating system's default receive buffer (for example 4KB) receives all inbound traffic very slowly, whatever the message size: with recbuf = 4KB each connection receives about 20 KB/s, so a 256 KB message takes several seconds to arrive. Listeners with tcp_backend = gen_tcp, and socket listeners that do not set recbuf, are not affected. | Remove tcp_options.recbuf from listeners that use tcp_backend = socket, or switch the listener to tcp_backend = gen_tcp. | Fix scheduled for 6.3.2 (emqx/emqx#19190) |
| 6.3.0 | TCP listeners with tcp_backend = socket may stay at full CPU and deliver slowly after a subscriber falls behindtcp_backend = socket is the default for TCP listeners on Linux and macOS since 6.3.0. When a subscriber on such a listener reads slower than messages arrive, for example during a large burst of QoS 1 messages, undelivered messages queue up in its connection. The connection then spends most of its time in garbage collection and delivers fewer messages than it receives, so the backlog does not shrink. CPU stays at the limit and delivery drops to tens of messages per second, even after publishing stops. TCP listeners with tcp_backend = gen_tcp and SSL, WebSocket and QUIC listeners are not affected. | Set tcp_backend = gen_tcp on TCP listeners, for example listeners.tcp.default.tcp_backend = gen_tcp. | Fix in progress (emqx/emqx#19201) |