环境信息
- EMQX 版本:emqx-5.0.8-el7-amd64
- 操作系统及版本:centos7
- 其他
问题描述
使用emqx-bench压测,按照每1毫秒增加一个客户端的速度建立1000个连接。若不开启认证,则3秒内可以完成,若使用redis 作为认证的工具,则每秒仅可建立几个连接。
通过日志分析,发现当没有大量的连接建立时,建立连接仅需要1秒以内,其中Redis query这个过程仅1秒不到
当压测开始的时候,发现Redis query这个过程可能需要好几分钟,
根据以上现象,考虑可能是Redis线程池争夺造成,所以将线程池直接改成5000,这样就不会出现资源争夺的情况,但是依旧Redis Query这个过程十分缓慢,效率很低。
目前无法定位到具体原因了,希望得到解答。
配置文件及日志
看起来是一个奇怪的现象
服务器的资源占用情况有么?
有测算过redis本身执行这条查询的速度么?
redis执行这条查询是很快的,当没有持续的连接请求上报的时候,建立连接是很快的,就是当并发量大的时候,认证的效率就会非常低下,我们在4.1的版本就遇到了这个问题,然后改成了配置文件认证就很快。
这个是刚刚又做了一轮压测的截图
是一个1000个压缩客户端 居中位置客户端的一个建立详细情况
也测试过,压测过程中,使用redis的客户端直接执行HMGET 这个语句,毫秒级的响应。
简单调查后,怀疑是 redis 驱动的问题,这个问题我有时间搭建环境复现下,可能需要些时间来调查
好的,感谢,麻烦您有结果后可以回复我,这样就解决我们的一个大难题了
问题已经定位到,是选择加密算法为bcrypt导致,建议可以优化下日志打印内容,可以更好的定位问题。