一个让服务器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;

 

posted @ 2014-07-30 20:28  一瓢清水  阅读(1232)  评论(0编辑  收藏  举报