【故障公告】数据库服务器今年第七次 CPU 100% 故障(12月8日又出现)
自11月9日第六次数据库服务器 CPU 100% 故障之后,今天下午又出现数据库服务器 CPU 100% 故障,是今年的第七次。
今天的故障发生于 16:01~16:07 期间,发现故障后我们立即重启阿里云RDS实例,重启后恢复正常。
正准备发布这篇故障公告时,数据库服务器又出现 CPU 100%,我们立即改用主备切换,切换后恢复正常。
这次故障给大家带来了麻烦,请大家谅解。
我们使用的阿里云 RDS 实例规格是「SQL Server 2016 标准版-高可用系列-16核32G」,这个 CPU 100% 问题很奇怪,可能是因为参数嗅探问题造成 SQL Server 缓存了性能极差的执行计划,我们会对照上次故障期间性能最差的 SQL 进一步排查。
更新:
- 在主备切换时,以为第一次切换没成功,切换了2次,所以切换后用的还是原来的 SQL Server 实例,即使这样也恢复了正常。
- 本想看一下故障期间性能差的 SQL,但阿里云 RDS 控制台似乎出了问题,“性能优化”中数据不能正常显示
12月8日更新:
今天中午 12:56~12:59 又出现 CPU 100%,发现后进行主备切换,13:04~13:07 期间又出现 CPU 100%,重启实例后恢复。
13:23~13:27 期间又出现 CPU 100%,有进行主备切换
13:27 之后 CPU 100% 问题还在继续,主备切换与重启实例不能解决,直到 14:24。
14:24 CPU 下降之前采取的最后一个措施:没有主备切换与重启实例,修改了分页获取首页博文的存储过程——不执行查询直接 return。
这个存储过程没有使用 OFFSET...FETCH
分页写法,依然使用的是 WITH...AS
15:01~15:04 期间又出现 CPU 100%,这次定位到是分页获取网站分类博文的存储过程(使用了 OFFSET...FETCH
分页写法)引起的,直接 return 后恢复正常。