关于ExHook单线程连接

错误报告

目前使用Exhook单个客户端的QPS 12左右,GRPC连接开始延迟,测试代码使用官方开源的。
据我测试连接GRPC是一个客户端一个GRPC连接,在并发高的场景开始一直延迟,请问有什么办法解决

环境

  • EMQX 版本:V4.4.15
  • 操作系统版本:window、linux

重现此问题的步骤

  1. xxx
  2. xxx
  3. xxx

预期行为

实际行为

实际exhook收到消息延迟


功能请求

使用EXhook插件接收mqtt数据,处理后丢到kafka

为什么你需要这个功能

使用EXhook插件接收mqtt数据

有更多日志和配置信息(软硬件配置)可以提供下么。

感谢回复,根据资料查看MsgQueue发现有消息堆积的情况。
请问是否1个mqtt client对应1个grpc server,这里是否可以用exhook.pool_size 进程去提高并发能力。

2023-03-13T08:32:55.891193+00:00 [warning] xxx1@10.42.219.0:27161 [ExHook] Unknown responsed value #{type => ‘STOP_AND_RETURN’} to merge to callback chain
2023-03-13T08:32:55.901470+00:00 [warning] xxx2@10.42.219.0:41506 [ExHook] Unknown responsed value #{type => ‘STOP_AND_RETURN’} to merge to callback chain
2023-03-13T08:32:55.923230+00:00 [warning] xxx3@10.42.219.0:31427 [ExHook] Unknown responsed value #{type => ‘STOP_AND_RETURN’} to merge to callback chain
2023-03-13T08:32:55.963369+00:00 [warning] xxx3@10.42.219.0:31427 [ExHook] Unknown responsed value #{type => ‘STOP_AND_RETURN’} to merge to callback chain
2023-03-13T08:32:55.971265+00:00 [warning] xxx1@10.42.219.0:27161 [ExHook] Unknown responsed value #{type => ‘STOP_AND_RETURN’} to merge to callback chain
2023-03-13T08:32:55.982517+00:00 [warning] xxx2@10.42.219.0:41506 [ExHook] Unknown responsed value #{type => ‘STOP_AND_RETURN’} to merge to callback chain
2023-03-13T08:32:56.003181+00:00 [warning] xxx3@10.42.219.0:31427 [ExHook] Unknown responsed value #{type => ‘STOP_AND_RETURN’} to merge to callback chain

很多这种警告是错误吗?

不是一个 mqtt client 对应一个 grpc server,pool_size 是 grpc client 进程的数量,提高这个值有可以一定程度上提高并发能力,但注意不要过高,最好设为 cpu 核数。

此外这个日志中的 warning 信息表示你的 ExHook 返回值里面缺少了 value 信息,有一些钩子需要返回 Valued Response

ExHook Python Demo

根据查询到消息:EMQX 底层采用了进城池来提高 HTTP 吞吐性能,我们会保证来自同一个客户端的请求都会命中到同一个进程中去,这样就可以保证顺序。

你好,如果想要Exhook 提高并发性能, 同一个客户端也无需保证顺序,是不是只能修改源码?