在某个查询场景的性能测试过程中,遇到了一个问题:测试过程中报错率逐渐攀升。进一步检查后发现,在查询业务所在应用的后台日志和平台应用的后台日志中,都出现了用户登录相关的报错信息。经过排查分析,发现了问题的根源,并做出了解决方案。
问题描述
在测试过程中,发现报错率逐渐增加,并且在后台日志中出现以下错误信息:
查询业务应用后台日志:
2023-08-25 19:37:49.629 xxx-web [019c40515a0854f4,019c40515a0854f4] [http-nio-9900-exec-576] ERROR [BaseService.java:249] - 调用平台权限接口失败,基础资料调用平台权限数据查询接口失败!
com.ufgov.ma.exception.MaException: 基础资料调用平台权限数据查询接口失败!
被调用的平台应用后台日志:
用户未登录或会话过期!
排查过程
进行了以下排查步骤来找到问题的根源:
- 完成9750个用户登录,并登入Redis集群,使用命令
keys userlogininfo:*
查询。发现每个节点平均分配了3000多个用户的tokenid。 - 在执行业务压测时,观察到Redis缓存中的tokenid逐渐减少。
- 查看redis集群监控,内存达到上限。
- 检查Redis配置的缓存淘汰机制,发现设置为
volatile-lru
,即在设置了