首页 > 代码库 > 一个让服务器CPU飙升的BUG。找了2天才发现。

一个让服务器CPU飙升的BUG。找了2天才发现。

昨天升级了站点。发现一升级上去,就发现站点服务器CPU开始占用接近100%。但是数据库服务器变化不大

还原回更新之前的代码。立马CPU降低。一开始已经是增加的缓存机制有了问题,采用数据库读取,放到线上依旧。

接着以为是数据统计有问题,删除掉还是一样。最后的最后,通过看到工作线程,发现登录请求也蛮多的。

然后这个登录代码更新到旧版本。就OK了。这次版本对登录进行了重构。直接上代码

 

错误代码中 登录后直接是使用了user.BbbID,造成了500错误。IIS对这个500错误也会有CPU损耗。于是就飙升了

 LoginUser user;            var result = BbsLogin(account, password, out user);            //判断是否MAC地址存在,默认打开就会注册。            var macentity = LotteryMemberInfoVWRule.Instance.GetEntity(t => t.MemberID == user.Bbsid);            if (macentity == null)            {                result.IsOK = false;                result.ErrMessage = "您当前电脑无法使用,请重新打开助手或者联系客服!";                return result;            }            //保存cokkie            if (result.IsOK)            {                SaveUserFormsCookie(user, isRememberMe);            }            return result;

正确的代码,先判断是否登录成功,在运行

  LoginUser user;            var result = BbsLogin(account, password, out user);            //保存cokkie            if (result.IsOK)            {                //判断是否MAC地址存在,默认打开就会注册。                var macentity = LotteryMemberInfoVWRule.Instance.GetEntity(
t => t.MemberID == user.Bbsid
); if (macentity == null) { result.IsOK = false; result.ErrMessage = "您当前电脑无法使用,请重新打开或者联系客服!"; return result; } SaveUserFormsCookie(user, isRememberMe); } return result;