EMQ v2.1.0-beta.1 版本正式发布。
改进Session/Inflight窗口设计,一个定时器负责全部Inflight QoS1/2消息重传。优化MQTT连接的GC机制,降低高消息吞吐情况下的CPU/内存占用。
EMQ 2.1.0版本正式采用'Semantic Versioning 2.0.0' 规范创建发布版本号,按'Tick-Tock'方式按月发布迭代版本。奇数版本问题修复与性能改进,偶数版本架构改进和新功能布。
注: EMQ 2.1+ 依赖Erlang/OTP R19+源码编译
GC优化
1. WebSocket、Client、Session进程空置一段时间后自动Hibernate与GC。
2. 新增'mqtt.conn.force_gc_count'配置,Client、Session进程处理一定数量消息后强制GC。
3. 大幅降低WebSocket、Client、Session进程fullsweep_after设置,强制进程深度GC。
新增功能
单Client、Session进程统计
支持对单个Client、Session进程进行统计,etc/emq.conf配置文件中设置'enable_stats'开启:
mqtt.client.enable_stats = on mqtt.session.enable_stats = on
新增'missed'统计指标
EMQ收到客户端PUBACK、PUBREC、PUBREL、PUBCOMP报文,但在Inflight窗口无法找到对应消息时,计入missed统计指标:
packets/puback/missed packets/pubrec/missed packets/pubrel/missed packets/pubcomp/missed
Syslog集成
支持输出EMQ日志到Syslog,etc/emq.config配置项:
## Syslog. Enum: on, off log.syslog = on ## syslog level. Enum: debug, info, notice, warning, error, critical, alert, emergency log.syslog.level = error
Upgrade QoS支持
支持根据订阅升级QoS,etc/emq.conf配置项:
mqtt.session.upgrade_qos = on
新增'acl reload'命令行
Reload acl.conf without restarting emqttd service (#885)
项目改进
etc/emq.conf 配置项变更
1. 变更 mqtt.client_idle_timeout 为 mqtt.client.idle_timeout
2. 新增 mqtt.client.enable_stats 配置项
3. 新增 mqtt.session.upgrade_qos 配置项
4. 删除 mqtt.session.collect_interval 配置项
5. 新增 mqtt.session.enable_stats 配置项
6. 变更 mqtt.session.expired_after 为 mqtt.session.expiry_interval
Hooks API
Hooks模块支持'tag'方式重复注册相同的回调函数。
合并扩展模块到emq_modules项目
合并emq_mod_presence, emq_mod_subscription, emq_mod_rewrite到emq_modules项目
变更emq_mod_retainer为emq_retainer项目
插件升级
Dashboard插件
Overview页面增加missed相关统计指标。
Client页面增加SendMsg、RecvMsg统计指标。
Session页面增加DeliverMsg、EnqueueMsg指标。
recon插件
变更recon.gc_interval配置项类型为duration
reloader插件
变更reloader.interval配置项类型为duration
HTTP认证插件
修复superuser认证导致ACL不可用问题。