2023.3.31 服务更新后响应变慢服务卡顿
背景
昨天计划今早6:00升级某游戏服务,上班路上心里还想着可别升出问题来,因为上周更跑得快升级就出现了高概率进入游戏失败的问题
9:00,运营发来消息,该进入游戏失败。这真是想什么来什么,要了亲命了。先安抚一下运营MM的情绪,又联系对应程序考虑要不要回滚服务,事实上根据之前处理另外一个玩法的经验,即便回滚也无法解决问题。最终定下方案,先按照另外一个玩法的处理方法,将开局消息改成异步,期待奇迹可以发生
10:00,消息改成了异步,根据上次处理另外一个玩法的经验,会出现半小时格外卡顿的情况,等同步消息消费完成,就会恢复顺滑
12:00,两个小时过去了,进不去游戏、卡顿的情况依旧存在,奇迹并没有发生。运营MM明显有点慌,我故作镇静,先吃饭吧,或许吃饱了就有灵感了
13:30,开始认真思考这个问题的前因后果:为什么其他游戏都没问题,偏偏这两个游戏;添加的代码已经Review过好几次,肯定没问题;况且上次出问题时,回滚也没有解决,应该不是代码层面的明显Bug……日志也看了很多遍,都是很正常的异常。没办法只能开大招,R服务、G服务fulldump,准备开始分析
分析过程
先分析R服务
1、用windbg打开dmp文件,加载符号表
2、按照惯例 ~*kv
命令查看所有线程,发现很多线程都在等待临界区