emqx http acl超时

EMQX 版本

emqx 4.2

EMQX 安装部署方式

EMQX 集群情况

emqx 4节点集群

服务器(运行 EMQX 的机器)硬件配置

16核 48G

服务器操作系统和平台

Ubuntu 22.04

服务端参数优化情况

压力机硬件配置

压力机使用的测试工具

压力机参数优化情况

在 EMQX 中启用的功能

启用了 emqx_auth_http.conf

具体问题

当acl的qps到达8k的时候,会出现http acl超时情况,http_acl是内网访问的后端服务器
qps下降到6k的时候就没有了

错误日志如下:
2026-11-03 10:06:28.296 [error] <<“976c9af0b4c45cca//0338803708126010018045//xpt_nvr_push”>>@117.61.60.162:65429 [Hooks] Failed to execute {emqx_acl_http,check_acl,[#{acl_req => {http_request,post,“/mqttvisit/acl”,[{<<“content-type”>>,<<“application/x-www-form-urlencoded”>>}],[{“access”,“%A”},{“username”,“%u”},{“clientid”,“%c”},{“ipaddr”,“%a”},{“topic”,“%t”},{“mountpoint”,“%m”}],5000},pool_name => emqx_auth_http}]}: {{timeout,{gen_server,call,[<0.9208.780>,{post,{“/mqttvisit/acl”,[{<<“content-type”>>,<<“application/x-www-form-urlencoded”>>}],<<“access=2&username=976c9af0b4c45cca%2F%2F0338803708126010018045&clientid=976c9af0b4c45cca%2F%2F0338803708126010018045%2F%2Fxpt_nvr_push&ipaddr=117.61.60.162&topic=%2Fsdt%2Fup%2Fiot%2Fdata%2F0e2c342164c8ee98%2F0338803708126010018045_0001%2Fevent&mountpoint=undefined”>>},5000},6000]}},[{gen_server,call,3,[{file,“gen_server.erl”},{line,223}]},{emqx_auth_http_cli,do_request,5,[{file,“emqx_auth_http_cli.erl”},{line,50}]},{emqx_acl_http,do_check_acl,5,[{file,“emqx_acl_http.erl”},{line,54}]},{emqx_acl_http,check_acl,5,[{file,“emqx_acl_http.erl”},{line,47}]},{emqx_hooks,safe_execute,2,[{file,“emqx_hooks.erl”},{line,164}]},{emqx_hooks,do_run_fold,3,[{file,“emqx_hooks.erl”},{line,143}]},{emqx_access_control,do_check_acl,3,[{file,“emqx_access_control.erl”},{line,77}]},{emqx_access_control,check_acl_cache,3,[{file,“emqx_access_control.erl”},{line,56}]}]}

你可以调一调 http 插件中的连接池大小。16 核最佳的连接池大小应该是 16~32 之间。
PS:4.2 已经过一维护周期了,建议升级到最新版本。

连接池大小默认是多少? 8吗?
在emqx_auth_http.conf 加连接池么? 参数是怎么配置的?
修改完之后重加载一下插件就可以了么? 还是说要重启整个emqx?

不好意思,他在 4.2 上是写死,就是处理器的核数,无法手动配置。
只能改了源码重新编译,不过我觉得设置为处理核数应该也是没有问题的。
建议你在你的 httpserver 处多加点日志,看是不是他的回包变慢了。
或者你直接让你的 httpserver 写写成全通过的。确保他是有足够快。再看。