emqx 规则引擎调用api批量订阅问题

好的,谢谢

@JimMoen 有啥进展么?大概会在哪个版本修复呢

@JimMoen @rocky 这个问题在5.1.0版本有修复吗?

Hi, 该问题已经在 5.1.0 中修复

我试了下还是没有修复,建60000个连接,通过规则引擎每个连接批量订阅10个topic
./emqtt_bench conn -u gtja -P eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJjbGllbnRJZCI6Imd0amFUZXN0MiIsImV4cCI6MTcyMDM3NTYwMiwiaWF0IjoxNjg0MzY1NjAyfQ.DG-9N41P7bROv5ciTV6dkrwEKBw0Y6P6elZvnBOwBajtOfswq1s_LuHzkLck2RKdZt6UHu6sYSTJNUoXHexeoQ -h 10.187.4.135 -i 1 -c 60000




您好,我注意到截图中 webhook metrics 有 “超期回复”,并且“请求超期” 配置为 60s,这代表 EMQX 在请求 WebHook Server 时,WebHook Server 已经出现了回复比较慢的情况。
此外还有一个需要关注的点是 118762/2=59381,59381*10 != 599610

猜测 是 WebHook Server 对处理 WebHook 请求和调用 Sub 接口进行了耦合,在结束对 EMQX 的 Sub 接口调用并返回结果后,才对 WebHook 接口返回结果?
以及是否是调用了 EMQX 的 POST /clients/{clientid}/subscribe 接口进行订阅?
可以尝试使用 bulk 接口对单个客户端进行批量订阅,以减少接口调用次数和频率,提高性能。
具体的 API 参数规范可以在 api-docs 页面使用 swagger 查看。

我是进行了两次测试,数据忘记清了,每次都有数据丢失,我把请求超时配置位60s是因为默认的15s丢失的数据太多


这个字段意思不是在缓冲区待的过期时间吗?我理解是这时候还没有转发到webhook server

Hi, 请检查您的 WebHook Server 在调用 EMQX 的 Subscribe 接口时的情况。
经过测试,单个 mqtt_bench 连接可以使每个 client 都有订阅,没有丢失的情况。
使用两个 bench 客户端,共启动 60000 连接也可以正常工作

这里是我使用的 http server,使用了 bulk api 进行批量订阅。
https://github.com/JimMoen/webserver/blob/main/apps/webserver/src/toppage_h.erl#L47

Single Bench:



After few minutes and start Dual Benchs:

多谢,我换了台机器试了下,两个mqtt_bench同时发都能订阅上,之前应该是网络原因限制了导致总有丢失

1 个赞

请问,你这个测试,webhook中配置是什么样的?