3.0 KiB
v4.4.17
Enhancements
-
Remove the error logs from the listeners with
Proxy Protocol
enabled when receiving TCP port probes emqx/esockd#172.Before this change, if the listener has enabled the
Proxy Protocol
(listener.tcp.external.proxy_protocol=on
), and if the connection get disconnected right after the TCP handshake is completed and before the ProxyInfo is received, the following error log will be printed:[error] supervisor: 'esockd_connection_sup - <0.3265.0>', errorContext: connection_shutdown, reason: {recv_proxy_info_error,tcp_closed}, offender:
After this change, no logs will be printed, but you can still view the statistics of error causes by using the
emqx_ctl listeners
command. -
Improve the logs when the listener experiences file descriptor exhaustion errors emqx/esockd#173. Previous log messages:
[error] Accept error on 0.0.0.0:1883: emfile
Log messages after this change:
[error] Accept error on 0.0.0.0:1883: EMFILE (Too many open files)
-
Improve the performance of the rule engine when there are a large number of rules #10283 Before this change, when there were a large number of rules, the execution of the rule engine became a bottleneck, as the rule engine consumed a lot of CPU time on rule queries and matching. In this optimization, we simply added a cache to the rule list, which greatly improved the efficiency of rule execution in this scenario. In our tests, we created 700 rules that did not perform any actions (bound to the "do_nothing" debugging action) on a 32-core, 32GB virtual machine, and sent MQTT messages to EMQX at a rate of 1000 messages per second (i.e. a rule trigger frequency of 700 * 1000 times per second). After applying this optimization, the CPU usage of the rule engine dropped to 55% to 60% of its original level.
Bug fixes
-
Fix that
Erlang distribution
can't use TLS #9981. AboutErlang distribution
, See here for details. -
Fixed MQTT bridge TLS connection could not verify wildcard certificate from peer #10094.
-
Fixed the problem that EMQX could not timely clear the disconnected MQTT connection information due to a large number of retained messages #10189. Before this fix, the
emqx_retainer
plugin and the connection cleanup process of EMQX shared the same process pool. Therefore, if the process pool was blocked by a large number of retain messages, many disconnected MQTT connections would not be cleaned up in time. For more details, see #9409. In this fix, we created a separate process pool for theemqx_retainer
plugin to avoid this problem. -
Fixed the error in the template file path of Helm Chart.#10229