生产问题-20190711

今天刚去了公司就被一个生产问题拖住了,问题是这样的,我们的服务使用spring cloud 、微服务,其中一个基础数据服务 使用的 是阿里云的 sqlserver 数据库,凡是直接连接这个数据库查询的 sql、接口,都超时严重,因为昨天晚上刚刚发布新的版本,今天就出现这个问题,所以第一时间锁定的是代码上有问题。所以我们开始如下排查:
1. 直接去生产调用超时接口,数据库执行对应sql,发现正常返回,并且没有超时严重问题
2. 调高数据库连接,没有效果
3. 查看连接数、数据库负载,内存、cpu等等全部正常
在经历上述常规排查 ,我是已经没有想法。我们的接口是没有加缓存,曾经猜测是大量接口冲击,拖垮数据库,但是合理的数据库连接池和负载,说明我们的1个小时1万次请求是完全可以hold住的,只有十几个连接在工作,理论上没有影响。
决定回滚代码

    再和别的业务组讨论后,发现不仅仅是我们的服务有问题,别的服务使用了 sqlserver 数据库,也存在接口超时问题,开始有人提出数据库有问题。
    
    所以我们先回滚代码排查代码问题,如果不行,决定趁着中午重启数据库。问题发现是上午,12点需要重启一次数据库,否则下午不能重启数据库就会就带来更大的影响
    
    然而重启服务依然没有解决问题,提交阿里云工单,代码临时加缓存

    除了加缓存,又提出新启动一个数据库实例,切换,临时使用

    3点时候,各项指数突然正常,通过更多等待观测,确定阿里数据库问题。什么都没有做就解决了。

总结:问题虽然是阿里云数据库问题,但是也带来一些问题值得我们反思
1. 发生问题时,要第一时间询问各个服务组,是否也出现问题,而确定是不是只有自己的服务,和自己的代码带来的问题
2. 缓存不完善,如果在一开始就加上缓存,即使数据库连接出了问题,也会降低影响。接口不满足高性能、高可用
3. 多找人沟通、多熟悉各项系统指标,多提高各种软实力

人的潜力是可以激发的,比如说你给我50斤的砖我可能拎不动,但你要是给我100斤的人民币我肯定拎起来就跑。
原文地址:https://www.cnblogs.com/mojiruo/p/11173485.html