最近遇到一个问题:

一个业务中用到了分布式锁,是用redis实现的。在业务请求中,正常流程或异常流程都有解锁代码。有一个取消按钮,点击取消按钮可以取消本次业务,之前是没有解锁代码的。在取消请求中加上解锁代码以后,每次发起请求到后端返回成功解锁信息,要用到到1分钟左右(测试环境),本地测试是1到5秒左右。

一开始解决这个问题的思路是,查看解锁代码是否有问题,这有涉及到redis,所以又查看redis的配置是否出错。为了验证redis是否有问题,写了一个测试代码,也是解锁,测试了几次,解锁耗时是14毫秒。那问题就不是出现解锁逻辑上。

有查阅了http请求状态pending的含义,最终用fiddler抓包工具来分析问题:

发现取消请求传输的请求体很大,60多M,这便是解锁慢的原因所在,解锁接口值需要接受一个id和cancel=true,并不需要其他信息。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐