emqx/changes/v4.4.17-en.md

2.7 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 many rules #10283 Before this change, when there were many rules, the execution of the rule engine became a bottleneck, it consumed a lot of CPU time on rule queries and matches. In this optimization, the efficiency of rule execution in this scenario was greatly improved by simply adding a cache to the rule list. In our tests (with over 700 rules), the rule engine achieved a performance improvement of about 5 times after applying this optimization.

Bug fixes

  • Fix that Erlang distribution can't use TLS #9981. About Erlang 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 the emqx_retainer plugin to avoid this problem.

  • Fixed the error in the template file path of Helm Chart.#10229