使用redis认证,认证效率非常低

环境信息

  • EMQX 版本:emqx-5.0.8-el7-amd64
  • 操作系统及版本:centos7
  • 其他

问题描述

使用emqx-bench压测,按照每1毫秒增加一个客户端的速度建立1000个连接。若不开启认证,则3秒内可以完成,若使用redis 作为认证的工具,则每秒仅可建立几个连接。
通过日志分析,发现当没有大量的连接建立时,建立连接仅需要1秒以内,其中Redis query这个过程仅1秒不到


当压测开始的时候,发现Redis query这个过程可能需要好几分钟,

根据以上现象,考虑可能是Redis线程池争夺造成,所以将线程池直接改成5000,这样就不会出现资源争夺的情况,但是依旧Redis Query这个过程十分缓慢,效率很低。
目前无法定位到具体原因了,希望得到解答。

配置文件及日志


image

看起来是一个奇怪的现象
服务器的资源占用情况有么?
有测算过redis本身执行这条查询的速度么?

redis执行这条查询是很快的,当没有持续的连接请求上报的时候,建立连接是很快的,就是当并发量大的时候,认证的效率就会非常低下,我们在4.1的版本就遇到了这个问题,然后改成了配置文件认证就很快。

这个是刚刚又做了一轮压测的截图


是一个1000个压缩客户端 居中位置客户端的一个建立详细情况

也测试过,压测过程中,使用redis的客户端直接执行HMGET 这个语句,毫秒级的响应。

简单调查后,怀疑是 redis 驱动的问题,这个问题我有时间搭建环境复现下,可能需要些时间来调查

好的,感谢,麻烦您有结果后可以回复我,这样就解决我们的一个大难题了

你好,这个问题目前有进展吗?

大佬,我们也碰到这个问题了,有进展不?

问题已经定位到,是选择加密算法为bcrypt导致,建议可以优化下日志打印内容,可以更好的定位问题。

果然是的,666