当前位置: 首页 > article >正文

大数据平台测试-一次生产P2故障记录

项目介绍:某鉴权项目。公司为了数据安全,去年评审通过了一个基于中间件kafka的鉴权项目,大概的意思,消费topic的应用需要对接鉴权项目,订阅应用,启动端口9093消费(默认是9092端口),当时大家(开发)都觉得风险太大了,不适合接入公司核心kafka集群。万一出错影响太大。但是领导,技术委员会通过了,大家也没啥办法,谁叫大家都是执行者。。。

先看出现生产事故的java代码:

    @Override
    public class process(WatchEvent event){
        Event.KeeperState state = event.getState();
        if(Event.KeeperState.SyncConnected = state)
            log.info("当前 Zookeeper 已连接")
    } else if(Event.KeeperState.DisConnected == state || Event.KeeperState.Expired == state)
            log.info(" XX项目服务端 和Zookeeper 断开连接,开始重连")
            try{
                client = new Zookeepe(servers, MAX_VALUE, null)// 这一行代码导致的故障
                // 其他逻辑
            } catch(...){
                // 手动抛异常
            } catch(...){
                // 手动抛异常
    } else{
                //...
    }

事故原因:XX鉴权模块存在bug,在ZK客户端和服务端失联时,处理逻辑中又创建了新的ZK连接,且未关闭旧的失效连接,短时间连接数量大量上升,引起Zookeeper集群压力过高,导致Zookeeper集群故障和kafka集群发生故障

分析:1、 开发时,开发不熟悉Zookeeper机制,process方法中已创建了连接,自己重新new 相当于不断地创建连接。而且还有一个大bug,连接没有关闭。。。

2、代码逻辑属于异常分支,开发和测试时都未测试,因为大家都觉得这一段代码都走不到,刚好运维把机器重启了,就走到这段逻辑了。。。

3、没有进行code review,技术负责人没有进行代码把关

4、代码属于一个紧急开关模块,该模块我们也以为是永远用不到的。。(数据库崩溃、服务崩溃。。。)

影响:影响公司核心业务,几万单,需要转人工处理,P2故障

后果:项目关停。。团队一年多的努力就这样白费了

总结:作为技术负责人,重要业务代码需进行详细的code review。作为测试,可以通过代码覆盖率工具看这段代码是否覆盖,未覆盖到的代码发到群里评审。另外,基于中间件的项目,风险是真的高。。。接入核心业务要慎重,谁能保证系统没有bug呢?但是有bug会对业务造成重大影响的项目还是要技术委员会做好把关


http://www.kler.cn/a/144677.html

相关文章:

  • 【数据结构/C++】栈和队列_顺序栈
  • STM32 启动文件分析
  • android shape绘制半圆
  • gitee推荐-1Panel
  • 英特尔和 ARM 将合作开发移动芯片技术,如何看待双方合作?
  • Mybatis-Plus 租户使用
  • proto语法学习笔记
  • docker devicemapper: Error running DeleteDevice dm_task_run failed
  • 用Python进行数据分析:探索性数据分析的实践与技巧(文末送书)
  • Robots 元标签与 X-Robots 标签
  • Proteus仿真--用DS1302与12864LCD设计的可调式中文电子日历
  • SpringMVC系列-7 @CrossOrigin注解与跨域问题
  • 基于springboot实现实习管理系统的设计与实现项目【项目源码+论文说明】计算机毕业设计
  • python web项目导包规范
  • 深度学习之基于Tensorflow银行卡号码识别系统
  • ubuntu环境删除qtcreator方法
  • Java学习路径:入门学习、深入学习、核心技术,操作案例和实际代码示例
  • STM32出现 Invalid Rom Table 芯片锁死解决方案
  • Vue3 响应式数据 reactive使用
  • Vite CSS Module 优雅的处理样式隔离