C# .Net MVC 下的 [OutputCache(Duration = 300)] 缓存穿透问题

近期做压测优化时,特意选用了无侵入式代码注解方式[OutputCache(Duration = 300)] 对接口做了5分钟缓存。依据业务预期,5分钟的缓存能确保我们的接口顺利通过压测。就在满怀信心等着通过的报告时,却被打脸了。

报告显示,在前2分钟,接口返回都正常无错误,接下来就出现了错误返回。仔细想想,这个问题在于,缓存失效的一瞬间,大量的请求穿透过去,导致请求直接压到了需要保护的后端服务。

于是,采用lock的方式,防止缓存击穿!

protected static object sysncObject = new object();

// 开缓存了,防止缓存失效的时候发现穿透效应
lock (sysncObject)
{
//原来的业务逻辑
}

经过lock处理后,压测顺利通过。目前没有发现,OutputCache的Cache保护措施,只能使用DIY进行击穿保护。

C# .Net MVC 下的 [OutputCache(Duration = 300)] 缓存穿透问题

此条目发表在未分类分类目录。将固定链接加入收藏夹。

发表评论

邮箱地址不会被公开。 必填项已用*标注