前言
双十一项目组做了一个类似于摇钱树的微信活动,部署到生产上发现,第二天部分用户的登录天数并没有更改。
查看数据库
查看数据库发现,部分用户的 last_login_time 列还停留在昨天,但是 update_time 却更新了,执行 sql 发现出问题的用户大概占 1/10 左右。
排查
代码逻辑排查,后台服务在收到登录请求的时候,会截取登录用户的微信 token,然后根据这个 token 去操作数据库,选择几个没有更新时间的用户在后台数据库中的 token 作为条件过滤日志发现,从 gateway 传过来的消息里面并没有带 token,进程是通 token 来判断用户是否有操作的,所以就没有判断用户有登录,就没有更新 last_login_time 字段。
原因后来找到了,是由于缓存导致的用户登录没有返回 token。