emqx/changes/v4.4.17-zh.md

44 lines
2.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# v4.4.17
## 增强
- 启用了 `Proxy Protocol` 的监听器在收到 TCP 端口探测时,不再打印错误日志 [emqx/esockd#172](https://github.com/emqx/esockd/pull/172)。
修复前,如果监听器已启用了代理协议 (`listener.tcp.external.proxy_protocol = on`)
但连接在 TCP 握手完成之后、收到代理信息之前就被断开了,则会打印下面一行错误日志:
```
[error] supervisor: 'esockd_connection_sup - <0.3265.0>', errorContext: connection_shutdown, reason: {recv_proxy_info_error,tcp_closed}, offender:
```
此修复之后不再打印任何日志,但仍然可以通过 `emqx_ctl listeners` 命令来查看错误原因的统计。
- 改进监听器出现文件描述符耗尽错误时的日志 [emqx/esockd#173](https://github.com/emqx/esockd/pull/173)。
之前的错误日志为:
```
[error] Accept error on 0.0.0.0:1883: emfile
```
现在改为:
```
[error] Accept error on 0.0.0.0:1883: EMFILE (Too many open files)
```
- 提升规则引擎在规则数量较多时的执行性能 [#10283](https://github.com/emqx/emqx/pull/10283)
在此改动之前,当规则数量比较多的时候,规则引擎的执行会成为瓶颈,规则引擎将耗费大量 CPU 在规则的查询和匹配上。
本次优化中,通过简单地给规则列表添加一个缓存,大幅提升了此场景下的规则执行效率。
在我们的测试中,在一个 32 核 32G 的虚拟机上,我们创建了 700 条不执行任何动作的规则(绑定了 "do_nothing" 调试动作),
并以 1000 条每秒的速度向 EMQX 发送 MQTT 消息(即,规则触发频率为 700 * 1000 次每秒),
在应用此优化后,规则引擎的 CPU 使用率下降到了原来的 55% ~ 60%。
## 修复
- 修复 `Erlang distribution` 无法使用 TLS 的问题 [#9981](https://github.com/emqx/emqx/pull/9981)。
关于 `Erlang distribution`, 详见 [这里](https://www.emqx.io/docs/zh/v4.4/advanced/cluster.html)。
- 修正了 MQTT 桥接 TLS 连接无法验证对端的带通配符的证书 [#10094](https://github.com/emqx/emqx/pull/10094)。
- 修复 EMQX 由于大量 retain 消息而无法及时清除已掉线的 MQTT 连接信息的问题。[#10189](https://github.com/emqx/emqx/pull/10189)。
在此修复之前,`emqx_retainer` 插件和 EMQX 的连接信息清理过程共用了同一个进程池,因此,
如果该进程池被大量的 retain 消息下发任务阻塞时,许多已经掉线的 MQTT 连接将得不到及时清理。
详见 [#9409](https://github.com/emqx/emqx/issues/9409)。
此修复中,我们为 `emqx_retainer` 插件创建了单独的进程池,从而避免了该问题。
- 修复了 Helm Chart 中模板文件路径的错误。[#10229](https://github.com/emqx/emqx/pull/10229)