跳到主要内容

在线业务的常见全栈故障种类与定位手段

· 阅读需 18 分钟
Kindling-OriginX
故障根因推理引擎

在线系统的稳定性和可靠性是企业数字化转型成功的关键。然而,由于云环境和系统演进的复杂性,故障的发生几乎不可避免。本系列文章将对在线系统可能遇到的全栈故障进行分类,并结合网上的案例分析,对比常规分析诊断手段与Originx推理引擎是如何能够轻松找到全栈故障的根因。

本文为该系列的第一篇,主要介绍常见故障以及全栈故障定位的难点,后续系列文章将重点介绍如何使用Orginx高效定位故障。

常见故障分类与常规的分析定位手段

应用程序故障

代码缺陷导致应用崩溃或错误

○ 案例:2023年双11期间,某汽车在线订单平台的Tomcat服务节点出现了严重的线程池耗尽问题。事发当天上午10点多,随着大促活动的用户流量激增,结算服务的响应时间明显下降。到中午时,大量来自北京地区的用户反馈在提交订单结算时,页面卡顿严重,部分直接超时失败。经过一天的紧张排查,最终发现是Java结算模块存在循环等待的死锁问题。该模块中存在太多的锁粒度,再加上连接池等配置不合理,并发压力下更容易发生死锁。临时解决方案是扩容结算服务的资源,并重启Tomcat释放线程。次日即行修复死锁代码,并持续优化相关模块的并发能力。这次事故虽然只持续了一天,但给用户造成了极差的下订体验。

○ 定位方法:人为分析日志,分析代码,对线程池进行监控,对代码定制化锁的监控(很难实现,没有办法覆盖所有场景

资源不足(CPU、内存、磁盘)

○ 案例:2023年5月12日,一家大型商业银行的新版网上银行系统在上线后不久遭遇了某些业务场景执行超时的错误。由于代码中存在一个未被发现的逻辑错误,导致在特定参数组合场景下,系统会重复执行某项业务逻辑,造成CPU使用率异常飙升。这种情况在测试环境中难以复现,因此未被及时发现。故障发生后,客户在进行转账和查询等操作时遇到了明显的延迟,严重时甚至导致服务不可用。银行紧急协调开发团队进行排查,在生产环境中利用jstack等工具查找CPU飙升的原因,最终在4小时内定位到了问题源头。通过快速发布补丁修复了BUG,并重新部署了服务。此次事件导致银行损失了大量客户交易,并对其声誉造成了一定影响。

○ 定位方法:借助java分析工具,在故障能复现的时机,人为分析问题

应用配置问题

○ 案例: 2023年3月15日,一家领先的金融支付服务公司遭遇了支付处理延迟的问题。由于对高峰时段的实例数扩缩容配置人为操作错误,导致在线支付服务的实例数量未能满足既定需求。在随后的高峰交易时段,支付系统出现了严重的延迟,部分交易无法完成,影响了客户的支付体验,并导致公司损失了数百万的潜在交易额。经过紧急扩展服务实例并重新配置负载均衡策略,服务在2小时内逐步恢复。此次事件突显了容量规划在金融服务中的重要性,并促使公司加强了对服务容量和性能监控的投资。

○ 定位方法:人为分析日志,分析代码,结合资源使用指标(单纯依赖CPU、内存、磁盘指标很难发现实例不够)


数据库故障

数据库连接问题

○ 案例:2022年春节假期前最后一个工作日,某大型在线商城的数据库连接池曾出现被耗尽的严重故障。当天上午10点前后,随着流量的激增,商城首页以及各大类目页的查询请求突然出现大量超时和失败。SRE在慌乱中排查了30分钟,最终确定是数据库连接池的问题,由于促销引起了流量波动,而数据库连接池配置仍是原来配置并不足以支撑大流量,可用连接资源在高峰时段几乎被同时耗尽所致。

○ 定位方法:建立数据库连接池监控关键指标

性能瓶颈(锁、查询等)

○ 2022年8月20日,某知名在线旅游预订平台出现数据库死锁导致机票预订业务中断数小时。高峰期时大量并发订单涌入,引发系统内部事务互相等待访问同一资源,造成死锁并耗尽连接池。经过大面积业务重启,瘫痪2小时之后才恢复。事后,该平台对业务代码进行重构优化, 从根本解决死锁风险。此次事故造成约2000万元订单收入损失。

○ 定位方法:建立数据库监控,建立死锁监控找到初始SQL语句的应用实例

网络故障

网络连接中断、延迟或丢包

○ 案例:2023年4月,某互联网金融云平台因内部容器云平台的COREDNS服务器群集发生异常,导致整个私有云内的核心交易系统无法正常解析内部服务地址。在接下来的3个小时内,平台的放贷、风控等多个交易系统出现大面积延迟和连接中断,账户查询、委托下单等关键业务无法正常使用。据初步统计,这次故障给金融机构带来的直接经济损失高达数亿元人民币。最终通过手动配置绕过DNS解析,临时恢复关键系统连接,但整体恢复所需时间超过10个小时。事后分析发现,DNS集群全军覆没是由于COREDNS升级之后的bug导致,但是没有完善的监控导致故障发现严重滞后。

○ 定位方法:对应用日志和网络流量做监控,单独定制DNS解析关键指标

网络配置错误

○ 案例:2022年12月,世界杯决赛期间,某大型视频直播平台由于网络设备配置问题,导致导致网络丢包比例较大,数百万在线用户观看比赛直播受到严重影响,画面频频卡顿中断。该故障持续近2小时,给平台带来了广告收益损失,也影响了品牌声誉。经过紧急处理和优化,网络质量逐步恢复,但已错过了决赛最关键时段。

○ 定位方法:网络流量监控,对网络交换机、路由器建立监控体系


缓存故障

缓存命中率下降

○ 案例:2023年6月8日早高峰,某知名新闻平台首页及文章详情页出现加载延迟、频繁超时。原因是缓存服务配置错误导致数据过早过期,高流量下未能及时刷新,与数据库产生数据不一致。经紧急调整缓存策略,禁用部分过期机制并扩容缓存集群,系统逐步恢复。但此次事故影响约200万访问,广告收益损失近百万元。

○ 定位方法:建立APM监控体系,检查Trace的缓存访问次数和延时数据

消息队列故障

消息堆积或消费者延迟

○案例:2023年5月15日,某知名电商平台消息中间件所在一台服务器磁盘出现坏道,导致消息写入延迟超10秒。高峰期部分订单消息阻塞,下游服务处理速度骤降80%,造成大量订单挤压及库存操作失败。由于该故障出现较少,SRE专家没有经验,排查期很长,长达1小时才排查出有问题的消息中间件实例,最后经磁盘热插拔修复坏道、调大消息队列容量等应急措施,系统逐步恢复。

○ 定位方法:建立APM监控体系 队列监控、人为分析日志

外部依赖故障

下游第三方服务调用延迟或失败

○案例:2023年7月6日,某金融科技公司接入第三方支付平台时,遭遇DNS故障导致解析异常,支付请求被调度至香港远程服务节点,网络延时高达200毫秒。当日下午2点开始,订单高峰期大量请求超时失败,支付接入率仅30%。经过一天的排查,终于确定了是第三方支付的DNS解析出现问题,临时固定域名,调用国内支付接口。但仍损失千万元订单手续费收入。

○ 定位方法: 建立APM监控体系,同时在日志中建立关键指标

基础架构故障

硬件故障(服务器、存储、网络设备)

○案例:2022年6月18日,618购物节期间, 某电商北京西单数据中心两台机架服务器主板同时发生故障,导致一个重要的订单系统服务中断。受影响的约6000名用户在下单支付环节遭遇失败,由于这个服务与商品库存管理直接相连,错过这个高峰期将可能导致损失数亿元营收。经过5小时的故障排查和系统切换,终于恢复正常。此次事故再次凸显了硬件冗余以及容灾能力对于电商业务的重要性。

○ 定位方法:硬件监控体系的建设

系统软件故障(操作系统、虚拟化层、软负载)

○案例:2023年3月,某热门视频直播平台在一场体育赛事直播过程中,由于负载均衡器组件发生故障,无法正确分发流量至下游转码服务器集群,导致部分转码节点超负荷宕机。此次事故造成大量用户无法观看直播画面,持续约2小时。经过现场工程师的快速响应和临时调度,负载得以重新分配,服务逐步恢复。但由于高峰期直播中断,给平台带来了可观经济损失和品牌声誉影响。事后分析发现,除了流量突发之外,负载均衡器在高压力下表现异常也是导致故障的重要原因。

○ 定位方法:研究中间件负载均衡器的指标体系,构建软负载的监控指标体系


覆盖全栈的监控体系建设和使用难度都很高

假设我们有能力建设一套统一的全栈监控体系和运维大数据平台,但对使用者而言,全栈系统仍存在以下两个主要难点:

使用难度高

数据量与信息过载: 在云环境下,监控系统的数据生成速度和体量是巨大的。这不仅涉及到数据的海量收集,更在于如何从这些数据中迅速提取出真正有价值的信息。用户面临的挑战是,要在不断涌入的数据流中,识别哪些是关键性能指标的异常,哪些是日常波动的“噪声”。信息过载不仅仅是技术问题,它还可能导致决策迟滞,增加操作复杂性,甚至可能掩盖真正的系统问题。

人员技能与知识要求: 全栈监控体系要求使用者不仅要对单一技术有深入了解,还要对整个技术栈有全面的认识。在技术迭代迅速的今天,要求团队成员不断学习新技术、新工具,并能够将这些知识应用于问题的诊断和解决中。这种跨领域的知识要求对人才的选拔和培养提出了更高的标准,同时也增加了团队管理的难度。

团队协作难: 在故障排查的时候,全栈的监控体系不同模块可能由不同团队或个人管理维护,比如网络团队、硬件团队、应用团队等。但是,由于噪声的存在,不同人对故障可能有不同理解,容易出现相互推诿的情况,导致故障排查难以找到真凶。

建设难度高

实际上,建设统一的全栈监控体系也是很难的,主要难点体现在:

数据存储与管理的现实性: 期望一个单一的存储系统能够无缝地处理所有类型的可观测性数据(如日志、指标、追踪等)是不现实的。每种数据类型都有其特定的存储需求和访问模式,这就要求存储解决方案必须具备高度的可扩展性和灵活性。同时,数据的生命周期管理、安全性和合规性也是需要重点考虑的因素。

技术整合的持续性: 技术的不断演进要求监控系统能够适应新的工具和服务。这不仅仅是一个技术问题,更涉及到组织的战略规划和资源分配。随着新组件的引入,现有的监控架构可能需要不断地调整和优化,以保持其有效性和相关性。这个过程需要持续的投入,包括时间、资金以及专业知识。