缓存加载问题引发的故障复现
发表于 2023-02-03
背景描述
卡中心的底层通用模块代码引用了总行提供的框架,框架本身有一点小小的问题,排查下来定位到了问题,故障报告做完心烦,就把自己脑子掏空,花时间复盘了一下
测试环境搭建
后端+前端+jmeter模拟高并发场景进行压测.通过利用部分工具来观察资源占用情况来确定是否整个过程出现了问题.
故障起因是管理员在业务作业时间在系统前台点击了刷新码表缓存的按钮,随后引发的流量拥塞,请求淤积,进而导致服务不可用
后端代码:
controller层,代码很简单,总共三个按钮:获取某一码表值\刷新码表\清空码表
/**
* 2023/2/3
*
* @author songfangqiang
* 云想衣裳花想容,春风拂槛露华浓
* 最是人间留不住,朱颜辞镜花辞树
*/
/*
api层,负责进行转发
*/
@RestController
@Slf4j
public class TestController {
@RequestMapping("hello")
public String test() {
return "hello World";
}
/**
* @描述 前端调用后端获取指定码表值的接口
* @访问网址 http://localhost:8080/getCache
*/
@RequestMapping("getCache")
public String getCache() {
/*
* 1.查询指定码表值,如果redis里没有,就触发刷新码表功能,去加载全部的缓存(黑人问号脸,为什么要这么写,我还是一脸懵逼)
*/
String a = "myKey1";
String o = (String)