暴风雨前的宁静
风和日丽的周五,一切都是那么美好。可天有不测风云~~~
故障前夕
一开始只有少许服务响应较慢,其他服务正常。
这时候运营钉钉群提示接口响应较慢,怀疑是慢SQL,登录阿里云后确实存在这样的情况。总体不影响线上主要业务。
中午12.00左右, 部分服务抛出异常,Tried one times。这时候初步判断是网络波动导致服务消费者调用服务提供者失败。
爆发
开发在查询的过程中,阿里云上显示产生了大量FullGC,并且数据库CPU到达97%。
同时钉钉群炸了,部分业务已经不可用了。猜测是否是产生了大量慢SQL 导致CPU飙升,最恐怖的还是dubbo的retry没有设置成快速失败,导致了服务进行了多次重试。 所有服务全都变的不可用。
开发开始查是哪些慢SQL导致的,发现很多SQL都出现了慢查询的情况。 但是最近几天都没有发过版,一直在好好运行着。
有人开始怀疑是不是被攻击了,果然,有些接口在1分钟内被调用了13000次。这不就得出结论了,这么大的流量瞬间打满了DB,不挂才怪。
临时解决方案:
暂时把改块业务暂时关闭,避免影响所有业务。同时添加限流。
总结
公司应该有类似网关的机制,对公司的整个入口进行流量监控。