[springboot版]高并发下创建token方法时间过长

Blade 未结 2 605
qmxx
qmxx 2022-06-28 15:29

一、该问题的重现步骤是什么?

1. 并发压力测试下通过记录各段代码执行时间,发现登录中的创建token方法耗时异常,超过了10000ms

2. 已将调整为无状态,理论上和redis无关

3.


二、你期待的结果是什么?实际看到的又是什么?

耗时正常

三、你正在使用的是什么产品,什么版本?在什么操作系统上?

springboot版 2.8.2

四、请提供详细的错误堆栈信息,这很重要。


五、若有更多详细信息,请在下面提供。

2条回答
  •  qmxx
    qmxx (楼主)
    2022-06-29 09:06

    已经测试,token生成的时间较长 

    作者追问:2022-06-29 09:06

    那就只能着手于减少token的字段或者重写token生成逻辑了。

    减少字段的话,可以只保留userId,但是相应的前端后端都需要修改一下,比如后端获取其他信息的时候,不能直接从token解析获取了,需要先通过userId获取User信息,然后再放到redis,从redis获取其他的比如deptId、roleId等字段。前端获取deptId、roleId的时候需要单独再调用一个接口,返回后把数据缓存到vuex内。

    如果重写token生成逻辑,这个还是比较难的,相当于去优化jjwt依赖的底层源码了。所以推荐上面的办法。

提交回复