IT运维中,如何快速进行故障排查?(以银行APP交易故障为例)

一、事件背景
正值"五一"黄金周旅游高峰期,某城商行的手机APP突然出现大面积交易失败和严重卡顿现象。据初步统计,从上午10点开始APP的交易成功率从正常的99%骤降至75%左右,用户反馈的交易失败投诉量在短短2小时内激增了500%。与此同时,APP的响应时间也从平均2秒延长至8秒以上,导致大量用户无法顺利完成转账、支付等操作。
这一事故影响范围不断扩大,截至中午12点已有超过50万用户受到不同程度的影响,其中约20万用户完全无法使用APP进行任何交易操作。

二、定位问题根源
首先,运维团队利用银行现有的APM(应用性能管理)工具对整个交易链路进行全面监控。通过分析交易链路上各个节点的响应时间,发现多个核心系统服务的处理时间都出现了明显的延长。
其次,使用链路追踪进行深入分析。通过对大量失败交易的调用链进行采样和分析,注意到一个共同特征:绝大多数超时或失败的交易都在访问支付结算业务的相关微服务时出现了异常,这个发现将故障的范围初步缩小。

为了进一步确认根因,团队使用了日志分析工具(如ELK stack)对系统日志进行了深入挖掘。通过设置关键字过滤和时间范围筛选,发现在支付结算业务相关微服务的MQ(消息队列)网关中出现了大量的错误日志,这些日志显示MQ网关在处理消息时频繁出现超时和连接断开的情况。
初步判断问题可能出在以下两个方面
1. 支付结算业务的相关微服务处于各系统交互链路的下游,可能成为整个交易流程的瓶颈。
2. 支付结算业务的相关微服务相关的MQ网关存在异常,导致消息处理出现问题。
经过进一步缩小范围推测,可能是由于假期期间交易量激增,导致支付结算业务的相关微服务和MQ网关无法承受如此大的并发压力,从而引发了整个系统的连锁反应。

应急处置
为了缓解系统压力,运维团队决定临时提高支付结算业务相关微服务的资源配置。通过云平台的弹性伸缩功能,将服务器的CPU核心数进行扩展。同时,增加了数据库连接池的最大连接数,从原来的200提升到500,以应对高并发情况。
其次,针对MQ网关的问题,团队采取了以下措施:
1. 增加MQ服务器节点,从原有的3个节点扩展到6个节点,以分散消息处理压力。
2. 调整MQ的消息处理策略,将部分非关键消息的处理优先级降低,确保核心业务消息能够优先处理。
3. 优化MQ网关的错误重试机制,将原本的固定间隔重试改为指数退避算法,以避免在网络波动时造成的大量无效重试。

除此之外,运维团队还部署更为细致的监控措施:
1. 在支付结算业务的相关微服务服务器上部署了专门的资源监控agent,实时监控CPU使用率、内存占用、I/O等待时间等关键指标。
2. 对MQ网关增加了消息堆积量、消息处理延迟时间等特定指标的监控。
3. 在应用层面,增加了更多的日志埋点,特别是在与支付结算业务的相关微服务和MQ交互的关键节点,以便更快速地定位潜在问题。

随着这些措施的实施,系统性能开始逐步恢复,支付结算业务相关微服务的平均查询时间从原本的500ms降低到了150ms以下,MQ网关的消息处理成功率从85%提升到了99%以上。APP的整体交易成功率在处置措施实施后的2小时内逐渐回升到了95%,响应时间也恢复到了正常水平。
三、擎创建议
根据上述案例,擎创认为在一些特殊时期,系统的承载能力预估不足是导致此次事故的根本原因。因此,从整体来看需要:
1. 建立更加完善的容量规划模型
结合历史数据和机器学习算法,更准确地预测未来的业务增长和系统负载。
2. 优化系统的弹性伸缩机制,实现更快速、更智能的资源动态调配。
3.相关业务系统方面
1) 重构访问逻辑,将非实时查询需求转移到专门的数据仓库中,减轻主支付结算业务的相关微服务的压力。
2)引入分布式缓存系统(如Redis集群),缓存热点数据,减少对支付结算业务的相关微服务的直接访问。
3)实施数据分片策略,根据业务特性将历史数据分散到多个物理节点,提高并行处理能力。
4.MQ网管方面
1)升级MQ系统,选用更高性能、更强大的消息中间件。
2)优化消息路由策略,实现更智能的负载均衡。
3)建立消息处理的降级机制,在系统压力过大时能够自动启动轻量级处理模式。
5.监控和预警方面
1)引入更先进的AIOps平台,利用机器学习算法实现更精准的异常检测和根因分析。
2)建立端到端的全链路监控体系,实现从用户端到后台系统的全面可观测性。
3)优化告警策略,实现更精准的告警触发和自动化的事件关联分析。
6.应急响应机制方面
1)建立更完善的应急预案库,针对不同类型的故障制定详细的处置流程。
2)强化跨部门协作机制,提高应急响应的效率和协同性。
3)定期组织大规模的故障演练,提高团队的实战能力。
通过这次事故,可以看出在业务快速发展的金融科技时代,系统的稳定性和可扩展性至关重要。将每一次的事故经验转化为推动技术革新的动力,全面提升IT基础设施的现代化水平,为用户提供更加稳定、高效的金融服务,是当下金融行业的使命之一。
擎创正不断深入优化金融智能运维解决方案,希望能够与更多行业客户携手,打造数智化的运维平台,为业务运营保驾护航!

擎创科技,Gartner连续推荐的AIOps领域标杆供应商。公司专注于通过提升企业客户对运维数据的洞见能力,为运维降本增效,充分体现科技运维对业务运营的影响力。
行业龙头客户的共同选择

了解更多运维干货与行业前沿动态
可以右上角一键关注
我们是深耕智能运维领域近十年的
连续多年获Gartner推荐的AIOps标杆供应商
下期我们不见不散~
相关文章:
IT运维中,如何快速进行故障排查?(以银行APP交易故障为例)
一、事件背景 正值"五一"黄金周旅游高峰期,某城商行的手机APP突然出现大面积交易失败和严重卡顿现象。据初步统计,从上午10点开始APP的交易成功率从正常的99%骤降至75%左右,用户反馈的交易失败投诉量在短短2小时内激增了500%。与此…...
入门mem0.NET
入门mem0.NET 安装包 如果你的项目使用了EntityFrameworkCore,那么你可以跟随这个教程走 <ItemGroup><PackageReference Include"mem0.NET" Version"0.1.7" /><PackageReference Include"mem0.NET.Qdrant" Version"0.1.7…...
虚拟机(CentOS7)安装jenkins
centos7安装jenkins 前提条件,安装jdk与maven 1、JDK17安装 # 进入系统管理员 sudo root # 进入对应文件夹下 cd /usr/local # 下载jdk17 wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.rpm # rpm命令安装下载的jdk17 rpm -ivh jdk-17_li…...
尚品汇-首页三级分类实现-nginx静态代理生成的静态页面(二十六)
目录: (1)问题详解 (2)首页商品分类实现 (3)修改web-all模块 (4)页面渲染 (1)问题详解 (2)首页商品分类实现 前面做了…...
对象存储及其相关概念介绍
对象存储是一种用来描述解决和处理离散单元(这些离散单元被称作为对象)的方法的通用术语。以下是关于对象存储的详细解析: 一、基本概念 定义:对象存储,也叫做基于对象的存储,是一种将数据以对象的形式进…...
TypeScript 研发系列
#TypeScript 编写HTML 游戏...
三维世界,一图打尽!Matplotlib带你玩转3D绘图,让数据跳舞的魔法棒!
1. 引言 嘿,亲爱的数据探险家们!你们是否曾梦想过,在二维的屏幕上,让数据跳出束缚,翩翩起舞,展现它那迷人的三维身姿?今天,就让我这位自封的‘数据魔术师’,带你解锁Mat…...
计算机常识与NOIP历史-CSP初赛知识点整理
真题练习 [2021-CSP-J-第2题] 以下奖项与计算机领域最相关的是( )。 A.奥斯卡奖 B.图灵奖 C.诺贝尔奖 D.普利策奖 [2017-NOIP-第7题] 中国计算机学会于( )年创办全国青少年计算机程序设计竞赛。 A. 1983 B. 1984 C. 1985 D. 1986 [2018-NOIP-第5题…...
代码随想录算法训练营第二天 | 209. 长度最小的子数组、59. 螺旋矩阵 II
目录 209. 长度最小的子数组1、题目描述2、思路3、code4、复杂度分析 LC59 螺旋矩阵 II1、题目描述2、思路3、code4、复杂度分析 209. 长度最小的子数组 题目链接:209 1、题目描述 给定一个含有 n 个正整数的数组和一个正整数 target 。找出该数组中满足其总和大于…...
鼻咽癌综述
小罗碎碎念 本期推文主题:鼻咽癌综述 这篇文章提供了一个全面的综述,探讨了鼻咽癌(NPC)的关键研究进展,包括病理机制、治疗、筛查和生物标志物的发展。 文章首先强调了NPC在特定地理区域的流行情况,并讨论了…...
中国AI PC行业研究报告
核心摘要: 2020-2023年中国笔电出货量呈下降趋势,PC厂商亟需从产品形态、软硬技术、需求场景等角度寻求新的增长机会。而随着大模型、生成式AI技术的到来,其强大的数据处理、学习泛化与内容生成能力,高质效加速了各行各业人工智能…...
Mybatis实战:图书管理系统(笔记)
前言:如果在接口的声明方法中鼠标右键没有Test的单元测试。 你的鼠标光标问题:要在花括号范围内!!!! 数据库表是应⽤程序开发中的⼀个重要环节, 数据库表的设计往往会决定我们的应⽤需求是否能顺利实现, 甚…...
win11 amd64 python安装matplotlib、pytorch报错记录
win11 amd64 python matplotlib 安装报错记录 安装时 错误是 metadata-generation-failed 查看上面的具体报错原因,来自: Files\Python\Python3_10_11\Include: linker input file not found: No such file or director注意Python 的路径中最好不要有…...
Python写UI自动化--playwright(等待页面加载机制)
很多情况下,我们都需要等待页面加载到一定程度才能进行下一步操作,而这个度该怎么操作,这篇文章就来详细讲一讲 目录 expect_popup() wait_until参数 "load" commit: "domcontentloaded" "networkidle"…...
书籍将整数字符串转成整数值(5)0804
题目 给定一个字符串str,如果str符合日常书写的整数形式,并且属于32位整数的范围,返回str所代表的整数值,否则返回0。 举例 str“123” 返回 123 str“023” 因为023 不符合日常的书写习惯,所以返回0 str“A13” …...
【2024年华数杯C题老外游中国】(完整题解+代码+完整参考论文)
请问 352 个城市中所有 35200 个景点评分的最高分(Best Score,简称 BS)是多少?全国有多少个景点获评了这个最高评分(BS)?获评了这个最高评分(BS)景点最多的城市有哪些&am…...
全球氢化双酚A (HBPA)市场规划预测:2030年市场规模将接近1330亿元,未来六年CAGR为2.7%
一、引言 随着全球化工行业的持续发展,氢化双酚A (HBPA)作为重要的化工原料,其市场重要性日益凸显。本文旨在探索HBPA行业的发展趋势、潜在商机及其未来展望。 二、市场趋势 全球HBPA市场的增长主要受全球化工行业增加、消费者对高性能化工产品要求提高…...
【C++】异常处理:深度解析与实战精髓,不容错过的编程秘籍
🌈 个人主页:Zfox_ 🔥 系列专栏:C从入门到精通 目录 🚀 前言:C语言传统的处理错误的方式 一: 🔥 C异常概念二: 🔥 异常的使用 2.1 📖 异常的抛出和…...
智能指针的循环引用 是什么 怎么引起的
智能指针的循环引用 是什么 怎么引起的 智能指针的循环引用(Circular Reference)是指两个或多个对象之间的共享指针相互引用,导致这些对象永远不会被释放,从而引发内存泄露。主要发生在使用std::shared_ptr时,因为它们…...
Stegdetect教程:如何用Stegdetect检测和破解JPG图像隐写信息
一、Stegdetect简介 Stegdetect 是一个开源工具,专门设计用于检测图像文件(JPG格式)中的隐写信息。Stegdetect 可以检测多种常见的隐写方法,比如 JSteg、JPHide 和 OutGuess 等。 二、使用Stegdetect检测图像隐写 官方描述&#…...
Spring Boot 实现流式响应(兼容 2.7.x)
在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...
CMake基础:构建流程详解
目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...
ardupilot 开发环境eclipse 中import 缺少C++
目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...
自然语言处理——Transformer
自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...
3403. 从盒子中找出字典序最大的字符串 I
3403. 从盒子中找出字典序最大的字符串 I 题目链接:3403. 从盒子中找出字典序最大的字符串 I 代码如下: class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...
CMake控制VS2022项目文件分组
我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...
python执行测试用例,allure报乱码且未成功生成报告
allure执行测试用例时显示乱码:‘allure’ �����ڲ����ⲿ���Ҳ���ǿ�&am…...
基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解
JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用,结合SQLite数据库实现联系人管理功能,并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能,同时可以最小化到系统…...
浪潮交换机配置track检测实现高速公路收费网络主备切换NQA
浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求,本次涉及的主要是收费汇聚交换机的配置,浪潮网络设备在高速项目很少,通…...
Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战
说明:这是一个机器学习实战项目(附带数据代码文档),如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下,风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...
