周末发现APP调用后台出现异常,返现报文很慢,有时候还会报错。
查找后台日志发现一个更新非常慢,源头就是下面的语句
userLoginDAO.updateByPrimaryKey(userLoginDO);
这个接口为什么会非常慢呢?
调查发现,疫情期间,APP的使用人员增多,并且APP在调用每个接口前都会调用一下登录接口,并且用同一个系统账号。
对同一个账号的并发更新导致mysql锁等待,并发高了这个更新操作需要等待好久才能完成。
紧急处理:
userLoginDO对象没有大变动的情况下,不去执行下面的更新操作
userLoginDAO.updateByPrimaryKey(userLoginDO);
问题虽然暂时解决了,但是还有很大优化空间,比如APP在获取的token没过期之前,不用重复调用login接口。
补充上UserLoginDO对象定义
@Data
@Table(name = "user_login")
public class UserLoginDO {
/**
* 用户名,主键
*/
private String userId;
*/
private String passWord;
/**
* 生效日
*/
private Date useTime;
/**
* 失效日
*/
private Date loseTime;
/**
* 登陆失败次数
*/
private Integer loginFalseCount;
/**
* 创建者
*/
private String createOperator;
/**
* 更新者
*/
private String updateOperator;
/**
* 创建日期
*/
private Date createDate;
/**
* 更新日期
*/
private Date updateDate;
}
领取专属 10元无门槛券
私享最新 技术干货