当前位置:项目开发->项目经验 ->经验分享:mysql数据库查询缓存引发的问题

原创版权标志经验分享:mysql数据库查询缓存引发的问题

作者:codexia  发表时间:2017/10/11 23:06:29  阅读:
[摘要] 我们做的系统使用了最新的安全机制,然而在实际测试中发现有一个很奇怪的问题,有时候登陆成功,有时候又登陆不成功。我们重启了nginx、重启了uwsgi、重启了mysql,但是这个问题一直都会存在。
  我们做的系统使用了最新的安全机制,然而在实际测试中发现有一个很奇怪的问题,有时候登陆成功,有时候又登陆不成功。我们重启了nginx、重启了uwsgi、重启了mysql,但是这个问题一直都会存在。
    问题的基本现象就是,前几次(可能是1次)登陆能够成功,然后后续的就会偶尔失败。再次重试,又可以成功。
    我们的登陆机制大概是这样的,首先我们会动态生成一个登陆码,然后将登陆码存到数据库中,然后再使用密码解密登陆码,最后得到真正的数据,传给服务器。服务器再查询数据库比对,如果一致,就登陆成功,如果不一致就登陆失败。
    注意,我这里只是大致描述一下流程,实际的登陆过程很复杂,安全措施做的很多。查了很久没有查出来具体原因。但是我知道有一个大致的方向,那就是缓存问题。而我通过分析这个现象,重启各个服务之后,开始登陆是可以的,但是随后就出问题,很可能是缓存的锅。但是为了确定问题确实如此,我们不能靠猜测,还需要找更多证据支持我们的推测。
    方法很简单,就是大量的测试,得到可靠的现象,寻找规律。同时我们打印日志,将登陆过程产生的数据都记录到日志文件里。然后从日志里寻找突破口。
    我们从大量的测试里就发现前面说的问题现象。然后从日志里发现了一些现象。登陆失败的必然不是第一次登陆,而且登陆失败时的登陆码必然是前面登陆过产生的登陆码,不会凭空产生。而这个登陆码可能是很早登陆的,也可以是前一次登陆的。这也就可...【登录后阅读更多内容】
微信扫码关注公众号CPP技术网,微信号cpp_coder,关注我们的公众号,阅读更多精彩内容!每天还可以领取大红包哦!!!每天还可以领取大红包哦!!!每天还可以领取大红包哦!!!
文章来源:C++技术网原创文章版权为网站和作者共同所有,会员文章禁止转载。非会员文章转载做好本文超链接即表示授权转载。通过文章下面的分享按钮可以自由分享所有文章。

返回顶部

在线提问
问题标题:
问题描述:(简陋的描述会导致问题被最后回答、没有针对性回答甚至无法解答。请确保问题描述的足够清楚。)