`

CNFM升降级之故障总结

阅读更多

项目上线之后,因为他抱过来的故障,截止到目前为止,已经有两个了。直接后果也是导致偶本季度的故障分已经基本被扣光了。有必要总结一下了。

一、外网搬家用户搬家失败,提示“图片银行空间已满”

现象:很多用户搬家之后发布的产品都失败了,提示图片银行没空间了。可是用户明明有上百M的未使用的空间。

排查过程

  1. grep整个代码,找到系统中抛出这中业务异常的地方(有两处),进入的条件都是图片银行的接口调用之后,判断图片银行没空间了。基本定位,就是该接口处返回值有问题。
  2. 进一步跟进看看方法实现,完全没问题啊,查看了SVN记录,最近此处代码根本没有被动过,况且如果真的是这里早就出问题了,怎么会等到现在才出问题呢?开始有点晕了。
  3. 因为是线上问题,不能跟踪代码执行流程和结果,感觉有点束手无策了。
  4. 汪汪帮我在测试环境跑了一遍搬家过程,发现没问题,于是感觉可能是个别案例,具体原因尚未明确,侥幸心理告诉我这个只是个案,于是第一天就这样结束了,告诉服务台的结果也是代码没问题,不是故障。
  5. 晚上是还是觉得有点不放心的,找来了刚哥又跟我一起过了一遍代码,还是没有发现问题,不过刚哥还是给出了建议,如果明天还有这个问题,直接找图片银行的人过来一起排查,毕竟是他们的代码,他们应该更熟悉具体逻辑。至此第一轮排查结束。
周四早晨晨会之后,我就找来了图片银行的工程师跟我一块排查了一遍代码,发现其中还是有两种情况会返回0这样的空间容量的。具体跟踪进去,发现取用户图片银行默认空间大小的地方是来自某文件,忽然之间恍然大悟,因为该文件在项目中被sourcing工程师修改过以适应新的逻辑。于是去SVN对比了一下修改记录,对比代码执行逻辑,确定果然会受到影响。到这里才找到了根本原因。
为什么会发生这个故障
直接原因就是项目发布当天没有重新发布该定时器。这也解释了为什么QA同学在测试过程中没有发生这个问题以及汪汪在测试环境中没有重现这个问题的原因,因为测试同学每次跑的时候,都相当于重新发布了一次该程序,已经是最新的了,所以压根不会再发生这个情况。当然如果当时汪汪重新跑的那个环境如果没有更新过(公用环境),理论上也会出现这个问题,但是当时没出现,有可能当时测试时候的账户是这种特定类型的,因为只修改了这种类型的配置,这个跟我没有给她提供足够的用户信息有很大关系。
如何避免这类问题
在测试阶段,QA测试过的定时器理论上都应该重新发布一次,因为当时都是根据当时最新的代码(这里包括数据文件)来做的,如果测试没问题,只能证明在新的修改上没问题,应该重新发布,不然可能会出现在老的环境下会出现问题,这次这个案例就是最好的说明了。当然根本手段还是需要开发同学对对整个系统有足够的了解,能够及时的识别代码修改可能带来的风险,但是鉴于系统的庞大和我目前对系统的了解程度,完全做到这点还很难,况且人的记忆是会消退甚至遗忘的,所以个人觉得还是通过第一种制度上的约束靠谱一点,也更稳妥一点。
排查过程暴露的问题
  1. 初级定位问题大的方向是对的,但是没有深入细节,对别人写的代码的分析不够透彻,这点曾经见过聪妈分析代码的过程,确实值得好好学习和积累。
  2. 主观上抱有侥幸心里,不然可以更早更及时的处理这个故障。
  3. 在发现问题之后,虽然电话和图片银行的工程师沟通过,但还是不够彻底,当时就应该把他们揪过来一块排查问题,毕竟他们才是最了解自己东西的人。
二、原来已经断约的某类型用户在转换类型重新开通之后,发现之前发布的WS产品都不见了。
服务台刚报过来这个故障时,第一反应就是发布当天也出现过这个问题,于是直接想到这可能是sourcing方面某工程师的问题,于是让服务台直接联系他。但不久就有新的用户报来了新的同样的问题。因为当时在处理外网搬家的故障,也没有引起足够的重视。快到下班时间时,sourcing方面的工程师直接上来找我了,明确了他的涉及该处的功能还没有正式被使用, 所以不可能是他那边的问题。于是在一起分析问题的时候发现,这批重新启用的老用户都是当时直接走的数据订正的流程来完成的,因为他们都是历史数据。想起来当时我给出的数据订正的sql语句少写了一个字段的更新,这个是直接导致问题的原因。哎,又杯具楽。于是又是一通紧急的数据订正,涉及的数据量在75W条以上。
问题原因
  1. 对数据订正这种过程没有给予足够的重视,可能是因为这个没有涉及到代码的改动。但是事实证明,数据订正本身就是一项非常危险的操作过程,如果处理的有问题,会直接导致线上故障(因为直接人为操作数据)。
  2. 对被订正的数据没有做充分的分析和排查,这个从根本上说也是属于第一种情况,但是作为开发,既然由自己提供订正的逻辑,就应该也有责任保证这个逻辑是没问题的。
如何避免
  1. 主观上,就是上面分析的问题的原因,自己必须给予足够的重视,并进行充分的分析,找到风险点。
  2. 上面的毕竟是主观上的,也是我觉得不是完全靠得住的方法,制度上的预防手段就是认真制定预发布和发布计划,将数据订正的验证列入其中,这样保证在预发布环境就暴露这个问题,不会把问题带到线上。
总结
任何失败的经历都是成长过程的源泉,希望在自己身上不要再次出现这样的错误,这样他们的曾经出现才是有价值的。
这里还要特别感谢Roby同学替我分担的数据订正故障,所以这个没最终被记录在案。
不过目前Q4的故障分数已经达到了自己的上限了,已经再经不起任何差错了,后面必须更加小心了,希望能够保持这里不要再发展了。

分享到:
评论

相关推荐

    两个数据库比较(SQLServer版)

    * 假设:库CNFM1与CFR1是一个项目不同时期的版本数据库,由于整合的需要,那么下面的功能可能有用 * 使用:将CNFM1、CFR1库的名称替换成你需要对比的两个即可F5 * 作者:黄顺龙 * 联系:huangshunlong@139.com */

    西门子FDA221-CN/FDA241空气 采样吸气泵说明书

    总结来说,西门子FDA221-CN/FDA241空气采样吸气泵是一款关键的消防安全设备,它在抽吸式烟雾探测系统中发挥着至关重要的作用。为了确保其有效性和安全性,用户必须按照指定的安装指南进行操作,并时刻注意设备的正确...

    移动梦网短信业务信令流程规范V3.0

    #### 七、总结 《移动梦网短信业务信令流程规范V3.0》是中国移动通信集团公司为了保障移动梦网短信业务的高效、稳定运行而制定的一项重要技术规范。通过对SCP、ISMG、SMSC及SP之间交互的信令消息流程进行详细描述,...

    docker配置mysql主从复制.docx

    - 创建目录 `/usr/local/mysqlData/master/cnfm` 和 `/usr/local/mysqlData/master/data`,分别用于存放配置文件和数据库数据。 - 编辑配置文件 `/usr/local/mysqlData/master/cnf/mysql.cnf`,设置 `server-id=1`...

    (源码)基于QT框架的云存储系统.zip

    # 基于QT框架的云存储系统 ## 项目简介 本项目是一个基于QT框架开发的云存储系统,旨在为用户提供一个安全、高效的文件存储和分享平台。系统采用CS架构,客户端通过QT框架搭建,服务端运行在Centos 7环境下。用户可以通过系统进行文件的上传、下载、分享,以及与好友的私聊和文件分享。 ## 项目的主要特性和功能 好友管理支持添加、删除好友,私聊好友,以及分享文件给好友。 文件管理提供文件夹的创建、删除、移动、重命名操作,支持文件的上传、下载、移动和分享。 用户界面使用QT框架搭建用户界面,提供友好的交互体验。 网络通信通过自定义的交互协议实现客户端与服务器的高效数据交互。 并发处理服务器端采用多路复用、内存池、线程池等技术,确保在并发环境下的稳定运行。 ## 安装使用步骤 1. 下载源码从项目仓库下载源码文件。 2. 配置开发环境 服务端安装Centos 7,并配置vim、G++、gdb等开发工具。

    2010-2023国自科立项名单管理学部.xlsx

    1、资源内容地址:https://blog.csdn.net/2301_79696294/article/details/143636809 2、数据特点:今年全新,手工精心整理,放心引用,数据来自权威,且标注《数据来源》,相对于其他人的控制变量数据准确很多,适合写论文做实证用 ,不会出现数据造假问题 3、适用对象:大学生,本科生,研究生小白可用,容易上手!!! 3、课程引用: 经济学,地理学,城市规划与城市研究,公共政策与管理,社会学,商业与管理

    二、现有一份上市企业年度财务报告文本中管理层讨论与分析文本大数据,请测度以下相关的数据(60分)

    二、现有一份上市企业年度财务报告文本中管理层讨论与分析文本大数据,请测度以下相关的数据(60分)

    多个SVCTTS的C推理库.zip

    c语言

    1991-2022年国家社科基金项目数据公布.xlsx

    1、资源内容地址:https://blog.csdn.net/2301_79696294/article/details/143636809 2、数据特点:今年全新,手工精心整理,放心引用,数据来自权威,且标注《数据来源》,相对于其他人的控制变量数据准确很多,适合写论文做实证用 ,不会出现数据造假问题 3、适用对象:大学生,本科生,研究生小白可用,容易上手!!! 3、课程引用: 经济学,地理学,城市规划与城市研究,公共政策与管理,社会学,商业与管理

    B.5-本科毕业生就业满意度分析.pdf

    B.5-本科毕业生就业满意度分析.pdf

    (源码)基于Spring Boot和JWT的饮品管理系统.zip

    # 基于Spring Boot和JWT的饮品管理系统 ## 项目简介 本项目是一个基于Spring Boot框架的饮品管理系统,主要用于管理饮品分类、商品信息、员工登录及权限管理等功能。系统通过JWT(JSON Web Token)实现用户身份验证和授权,确保系统的安全性和可靠性。 ## 项目的主要特性和功能 1. 商品管理包括商品的添加、编辑、删除和查询功能,支持分页查询和按分类查询。 2. 分类管理支持饮品分类的添加和查询,方便用户按类别浏览商品。 3. 员工登录与权限管理实现员工登录功能,并根据员工角色分配不同的菜单权限。 4. 图片上传与管理支持商品图片的上传和更新,确保商品信息的完整性。 5. 验证码生成与验证提供图形验证码的生成和验证功能,增强系统的安全性。 6. JWT身份验证使用JWT实现用户身份验证和授权,确保系统的安全性和可靠性。 ## 安装使用步骤 1. 复制项目 bash 2. 配置数据库

    基于PythonSnort入侵检测IDS系统 框架 html + css + jquery + echart + python

    基于PythonSnort入侵检测IDS系统 框架 html + css + jquery + echart + python + flask + snort + snortrules(支持webtop10,cve检测配置规则就行) + mysql 用户类型 管理员 admin 123456 模块介绍 登录注册 Snort系统首页 Snort入侵检测 (Snort辅助检测) Snort策略配置 Snort历史日志 Snort密码重置 退出登录 数据库设计SnortInfo Admins Idsni pip install -i https://mirrors.aliyun.com/pypi/simple Pillow

    yolov8 瑞芯微 rknn 板端 C部署.zip

    c语言

    一个用于解析世界各地街道地址的C库,由统计NLP和开放地理数据提供支持.zip

    c语言

    佳能打印机清零软件和教程

    佳能打印机清零软件和教程

    (源码)基于Python的船舶轨迹与波浪模式分析系统.zip

    # 基于Python的船舶轨迹与波浪模式分析系统 ## 项目简介 本项目是一个基于Python的船舶轨迹与波浪模式分析系统,旨在通过雷达图像数据(DAS数据)分析船舶的航行轨迹,并模拟和可视化船舶产生的尾波如何被DAS系统感知。项目包含了数据读取、滤波处理、轨迹绘制、模拟数据生成与可视化等多个功能,并使用了TDMS文件格式的读取和处理,以及Radon变换等数据处理技术。 ## 主要特性和功能 1. 数据读取与预处理项目提供了读取TDMS文件格式的雷达图像数据,并进行了滤波处理和下采样,以便于后续的数据分析和可视化。 2. 雷达图像分析通过Radon变换将二维雷达图像数据转换为一维正弦图,便于分析船舶的航行轨迹和速度。 3. 模拟数据生成项目模拟了船舶在海上行驶时产生的尾波,并模拟了这些尾波如何被DAS系统感知。 4. 可视化展示通过matplotlib库将处理后的数据和模拟数据可视化,方便用户直观地了解船舶的航行轨迹和波浪模式。

    【9464】基于Springboot+vue的大学生计算机基础网络教学系统.zip

    技术选型 【后端】:Java 【框架】:springboot 【前端】:vue 【JDK版本】:JDK1.8 【服务器】:tomcat7+ 【数据库】:mysql 5.7+ 项目包含前后台完整源码。 项目都经过严格调试,确保可以运行! 具体项目介绍可查看博主文章或私聊获取 助力学习实践,提升编程技能,快来获取这份宝贵的资源吧! 在当今快速发展的信息技术领域,技术选型是决定一个项目成功与否的重要因素之一。基于以下的技术栈,我们为您带来了一份完善且经过实践验证的项目资源,让您在学习和提升编程技能的道路上事半功倍。以下是该项目的技术选型和其组件的详细介绍。 在后端技术方面,我们选择了Java作为编程语言。Java以其稳健性、跨平台性和丰富的库支持,在企业级应用中处于领导地位。项目采用了流行的Spring Boot框架,这个框架以简化Java企业级开发而闻名。Spring Boot提供了简洁的配置方式、内置的嵌入式服务器支持以及强大的生态系统,使开发者能够更高效地构建和部署应用。 前端技术方面,我们使用了Vue.js,这是一个用于构建用户界面的渐进式JavaScript框架。Vue以其易上手、灵活和性能出色而受到开发者的青睐,它的组件化开发思想也有助于提高代码的复用性和可维护性。 项目的编译和运行环境选择了JDK 1.8。尽管Java已经推出了更新的版本,但JDK 1.8依旧是一种成熟且稳定的选择,广泛应用于各类项目中,确保了兼容性和稳定性。 在服务器方面,本项目部署在Tomcat 7+之上。Tomcat是Apache软件基金会下的一个开源Servlet容器,也是应用最为广泛的Java Web服务器之一。其稳定性和可靠的性能表现为Java Web应用提供了坚实的支持。 数据库方面,我们采用了MySQL 5.7+。MySQL是一种高效、可靠且使用广泛的关系型数据库管理系统,5.7版本在性能和功能上都有显著的提升。 值得一提的是,该项目包含了前后台的完整源码,并经过严格调试,确保可以顺利运行。通过项目的学习和实践,您将能更好地掌握从后端到前端的完整开发流程,提升自己的编程技能。欢迎参考博主的详细文章或私信获取更多信息,利用这一宝贵资源来推进您的技术成长之路!

    (源码)基于嵌入式系统的Greenhouse环境监测系统.zip

    # 基于嵌入式系统的Greenhouse环境监测系统 ## 项目简介 本项目旨在通过嵌入式系统监测温室内的环境参数,包括空气温度、湿度、地面温度和湿度以及光线强度。通过连接多种传感器到Nucleo微控制器L432KC,收集数据并通过Sigfox模块进行网络传输,用户可以在网站上查看这些数据。此外,数据还会实时显示在OLED屏幕上,方便用户直接观察。系统通过光伏电池和电池供电,实现了自给自足的能源管理。 ## 项目的主要特性和功能 1. 传感器数据读取通过DHT传感器(温度和湿度)、DS18B20温度传感器、光传感器TSL2561等读取环境参数。 2. 数据处理和传输通过主程序(main.cpp)处理读取的数据,并通过Sigfox模块进行网络传输。 3. OLED屏幕显示实时显示环境参数数据,包括空气温度、湿度、光线强度等。 4. 开源和可扩展性项目基于开源平台开发,可方便地集成更多传感器和功能。 ## 安装使用步骤 1. 下载并解压项目源码文件。

    (源码)基于QT的景点管理系统.zip

    # 基于QT的景点管理系统 ## 项目简介 本项目是一个基于QT框架开发的景点管理系统,旨在帮助用户管理和查询旅游景点的信息。系统通过图形界面展示景点之间的连接关系,并提供景点推荐路径、最短路径查询、深度优先搜索遍历等功能。 ## 项目的主要特性和功能 1. 景点管理 插入新的景点和边,构建景点图。 获取景点信息,查找与指定景点相邻的边。 2. 路径计算 计算并显示景点之间的推荐游览路径,基于最小生成树算法。 计算并显示两点之间的最短路径。 3. 景点遍历 提供深度优先搜索(DFS)功能,从指定景点开始遍历所有相关景点。 4. 信息展示 显示所有景点之间的连接路径。 显示指定景点的详细信息。 ## 安装使用步骤 1. 环境准备 确保已安装QT开发环境(建议使用QT 5.12.10及以上版本)。 确保已安装MinGW 32位编译器。

    简单的系统智能黑白棋小游戏

    简单的系统智能黑白棋小游戏

Global site tag (gtag.js) - Google Analytics