环境
- EMQX 版本:v5.8.4开源版
- 操作系统版本:k8s 部署 2*core
- 资源:2C*2
重现此问题的步骤
压测目标:5w MQTT TLS 连接
压测工具:emqtt-bench
连接速率:1000/s 建连速率
关注的 hook:
on_client_authenticateon_client_connectedon_client_disconnected
统计方式:
on_client_authenticate:通过 hook 日志统计次数on_client_connected:通过 hook 日志统计次数on_client_disconnected:通过 hook 日志统计次数连接数:通过 Dashboard 查看当前在线连接数
下面测试的hook全部成功没有失败的
一共测试了3次:
- on_client_authenticate钩子日志数量:41254
on_client_connected钩子日志数量:41051
on_client_disconnected钩子日志数量:18
dashboard当前连接数: 49988
当前连接数 49988 明显高于on_client_connected = 41051 - on_client_authenticate钩子日志数量:40770
on_client_connected钩子日志数量:40554
on_client_disconnected钩子日志数量:1389
dashboard在线连接数: 45861
当前连接数 45861 高于on_client_connected = 40554 - on_client_authenticate钩子日志数量:40868
on_client_connected钩子日志数量:40722
on_client_disconnected钩子日志数量:1196
dashboard在线连接数: 48188
当前连接数 48188 高于on_client_connected = 40722
预期行为
在hook全部执行成功的情况下,且日志只会打印一次
我认为压测期间,dashboard的当前连接数应该小于等于on_client_connected日志数量
实际行为
我目前的理解是:
on_client_authenticate和on_client_connected不完全相等是可以理解的
因为可能存在客户端在 authenticate 之后、connected 之前断开连接的情况。- 但如果 Dashboard 当前连接数高于
on_client_connected统计值,从时序上看就比较难理解。
因为一个当前仍在线的连接,理论上应该已经进入过on_client_connected。 - 这个现象只在 1000/s 高建连速率下稳定出现,而在 200/s、500/s 下没有出现。