【稳定性】关于缩短MTTR的探索

稳定性,关于,缩短,mttr,探索 · 浏览次数 : 31

小编点评

**2.1、执行故障应急响应机制无论一个组织规模有多大,其最重要的特征之一就是应对紧急事件的能力。** - 建立完备的训练和演习流程,以确保能够快速、有效地应对紧急事件。 - 了解不同类型的故障应急响应机制,根据需要选择合适的机制进行应急处理。 - 实时监控系统状态,及时发现紧急事件,并采取对应措施进行应急处理。 - 利用预案机制,提前做好应对紧急事件的准备,以减少应对时间。 - 进行应急恢复测试,确保系统恢复正常的能力。 **2.2、快速止血应急预案基本原则:** - 在故障处理过程中采取的所有手段和行动,一切以恢复业务为最高优先级。 - 尽最大可能让系统恢复服务。 - 快速止血而不是根源排查。 - 首先需要粗定位问题大概即可,然后通过一些应急预案措施来恢复现场。 **2.3、充分利用现有工具,智能分析定位问题** - 工具事先梳理清楚服务间复杂的依赖关系,聚焦瓶颈服务的核心问题。 - 全域看板,集成UMP采集点,可快速定位是哪一个环节TP99高。 - Pfinder分布式调用链路,作为分析基础。 **2.4、业务问题根据logbook查找,这个没什么好讲的。** - 通过标准化程序来指导训练技术人员,可以减少解决问题所需的时间。 - 在相同的故障情况下,拥有适当的文档和应急预案SOP可以让您快速检查可能导致故障的所有因果因素。 **三、总结在线上问题修复后,编写COE(Center of Excellence)复盘报告是非常重要的一步。** - 可以回顾整个问题的处理过程,思考如果当时做了哪些可以更快缩短MTTR(Mean Time To Repair)的方法。 - 从中总结经验教训,并提出改进建议。 - 这些建议可以包括优化流程、提高效率、加强培训等方面的内容,但不需要列一堆Action,根据2/8法则抓重点即可。

正文

一、什么是 MTTR ?

当系统出现系统故障时,我们需要通过一些指标来衡量故障的严重程度和影响范围。其中MTTR(Mean Time To Repair 名为_平均修复时间_)是一个非常重要的指标,它可以帮助我们了解修复系统所需的平均时间。花费太长时间来修复系统是不可取的,尤其对于京东这样的企业来说更是如此。如果MTTR过长,可能会导致用户结算卡单、影响公司收入损失等严重后果。因此,为了确保系统的稳定性和可靠性,我们需要尽可能地缩短MTTR。

要计算MTTR,就是将总维护时间除以给定时间段内维护操作的总数,MTTR计算公式:

二、如何缩短MTTR

了解MTTR对于任何组织来说都是一个非常重要的工具,因为它可以帮助我们更好地响应和修复生产中的问题。在大多数情况下,组织都希望通过内部维护团队来降低MTTR,这需要必要的资源、工具以及软件支持。

那么,您可以采取哪些步骤来缩短组织的MTTR呢?最好的起点是了解MTTR的每个阶段并采取措施减少每个阶段的时间。具体来说,我们可以考虑以下几个方面:

1、问题发现时间:监控报警识别故障

对于发生故障后技术人员识别问题的时间段,我们可以通过建立报警系统来缩短MTTR识别时间。通过实时监测系统的运行情况,及时发现并触发报警机制,可以帮助我们在最短的时间内定位问题,并采取相应的措施进行修复。

我们可以通过设置合理的阈值和规则,过滤掉那些不必要的告警信息,从而避免告警噪音对开发运维团队的干扰,让他们更加专注于真正的问题。

1.1、UMP监控

  • 通过UMP实现3个黄金监控指标(可用率、调用量、TP99)。

在配置报警机制时,我们可以综合考虑可用率、TP99以及调用量等因素来进行评估。通过这些指标的综合评估,可以帮助我们更全面地了解系统运行情况,从而及时发现潜在的问题并采取相应的措施。

建议在进行报警配置时,可先采取较为严格的策略,即先紧后松,逐步调整到最佳状态。这样可以确保在最开始阶段就能够及时发现问题,避免出现重大故障。但随着系统的逐渐稳定,我们也可以根据实际情况适当放宽报警阈值,以提高系统的可用性和效率。

需要注意的是,在进行报警配置时,我们需要结合具体的业务场景和系统特点来进行调整和优化。不同的系统可能存在不同的风险点和瓶颈,因此我们需要根据实际情况来制定相应的报警策略,以保证系统的稳定性和可靠性。

critical告警方式:咚咚、邮件、即时消息(京ME)、语音
可用率:(分钟级)可用率 < 99.9% 连续 3 次超过阈值则报警,且在 3 分钟内报一次警。
性能:(分钟级)TP99 >= 200.0ms 连续 3 次超过阈值则报警,且在 3 分钟内只报一次警。
调用次数:当方法调用次数在 1 分钟的总和,连续 3 次大于 5000000 则报警,且在 3分钟内只报一次警

warning告警方式:咚咚、邮件、即时消息
可用率:(分钟级)可用率 < 99.95% 连续 3 次超过阈值则报警,且在 30 分钟内报一次警。
性能:(分钟级)TP99 >= 100.ms 连续 3 次超过阈值则报警,且在 30 分钟内只报一次警。
调用次数:当方法调用次数在 1 分钟的总和,连续 3 次大于 2000000 则报警,且在 3 分钟内只报一次警
  • 如果UMP是定时任务,最重要的一点就是确定好监控时段。只有正确地配置了监控时段,才能确保UMP在预计时间段内正常执行,这样一旦UMP未能在预计时间段内执行,就会自动触发报警机制,及时发现并解决问题。

1.2、报警要 快、准、少

在处理报警信息时,我们的关键不在于数量的多少,而在于信息的准确性和完整性。我们的小组每天都会接收到几百个报警信息,你是否有足够的精力和时间去查看每一个呢?你能确保每一个都得到了关注吗?

因此,我们需要对业务影响进行评估,并根据情况设定适当的报警频率。特别是对于那些被视为"关键语音"的报警信息,我们更应该第一时间发现并进行处理。只有这样,我们才能保证在面对紧急情况时,能够迅速、准确地作出反应,最大程度地减少可能的影响。

1.3、细节决定成败

  1. 如果报警信息的响应时间较长,我们需要检查一下团队的值班响应机制是否正常。我们需要确保告警信息是否能够有效地传达给正确的人,以便及时解决问题。

  2. 关于报警信息的日清日结,我们应该建立相应的处理机制,确保每条报警信息都能得到妥善处理。如果无法做到日清日结,我们需要深入分析原因,并采取相应的措施加以改进。

  3. 在处理报警信息时,我们需要深入分析其根本原因。只有找到问题的根源,才能从根本上解决问题。

  4. 如果报警频繁但一直未被处理,我们需要认真思考这个报警是否有必要的存在。有时候,一些报警可能是由于误报或者无关紧要的问题引起的,这时候我们需要对这些报警进行筛选和排除。

  5. 如果出现问题后发现对应的UMP或其他环节的报警信息未添加,我们需要仔细检查是否还有其他核心环节也漏添加了。如果有漏添加的情况,我们可以采用工具扫描来发现。

  6. 对于之前出现的报警信息,我们不能凭经验认为是某原因导致的。历史经验并不一定准确可靠,只有通过调查和分析相关日志才能得出真正的结论。

  7. 在配置报警信息时,我们需要认真考虑其合理性。建议先采取紧后松的方式逐步调整到最佳状态。这样可以避免一开始就出现过多或过少的报警信息,从而提高工作效率和准确性。

2、缓解系统问题时间:故障响应机制、快速止血

为什么我们需要缓解系统问题时间,而不是仅仅定位问题呢?这是因为在处理系统问题时,仅仅定位问题只是解决问题的一部分。更重要的是,我们需要尽快缓解系统问题,以避免其对业务的影响进一步扩大。

为了提高问题处理效率,我们需要从以下三个方面入手:

  1. 完善指挥体系和角色分工:一个完善的指挥体系和明确的角色分工可以有效地提高故障处理的效率。在处理问题时,各个角色需要明确自己的职责和任务,并协同配合,共同解决问题。

  2. 完备的技术层面故障隔离手段:在技术层面上,我们需要采取一些故障隔离手段,比如通过DUCC开关等方式来避免过度回滚代码。这样可以更加快速止血(DUCC开关秒级,如机器多回滚需要5-10分钟)

  3. 经过足够的演练的故障处理机制保障:最后,我们需要建立一个经过足够演练的故障处理机制保障,包括UAT环境测试、捣乱演练、应急预案SOP等。这样可以在真正出现问题时,快速响应并有效解决问题。

总之,为了提高问题处理效率,我们需要采取一系列措施来缓解系统问题时间,而不仅仅是定位问题。只有这样,才能真正保障系统的稳定性和可靠性。

2.1、执行故障应急响应机制

无论一个组织规模有多大,其最重要的特征之一就是应对紧急事件的能力。在面对紧急情况时,需要有一套完善的应急预案和实战训练机制,以确保能够快速、有效地应对各种突发状况。为了实现这一目标,我们需要从以下几个方面入手:

  1. 建立完备的训练和演习流程:建立和维护一套完备的训练和演习流程是非常重要的。这需要一批对业务熟悉、专注投入的人来负责制定和执行相关计划。同时,还需要根据实际情况定期进行演习和模拟测试,以确保应急预案的有效性和可操作性。

  2. 先把问题上报组内、发挥团队的力量:在处理紧急事件时,应该先把问题上报组内,并充分发挥团队的力量。通过集思广益的方式,可以更加快速地找到问题的根源,并采取相应的措施进行解决。

  3. 合理判定问题严重程度:在判断问题的严重程度时,需要具备良好的工程师判断力,并保持一定的冷静。

总之,为了提高组织的应对紧急事件的能力,我们需要建立完备的训练和演习流程,充分发挥团队的力量,并合理判定问题的严重程度。只有这样,才能真正保障组织的稳定性和可靠性。

关键角色分工

  1. 故障指挥官。这个角色是整个指挥体系的核心,他最重要的职责是组织和协调,而不是执行,比如负责人、小组长、架构师。

  2. 沟通引导。负责对内和对外的信息收集及通报,但是要求沟通表达能力要比较好,比如产品经理。

  3. 执行者。参与到故障处理中的各类人员,真正的故障定位和业务恢复都是他们来完成的,比如小组核心研发、运维同事等。

流程机制

  1. 故障发现后,On-Call同事或者小组长,有权召集相应的业务开发或其它必要资源,快速组织会议。

  2. 如果问题疑难,影响范围很大,这时可以要求更高级别的介入,比如部门负责人等。

反馈机制

反馈当前处理进展以及下一步Action,如果中途有需要马上执行什么操作,也要事先通报,并且要求通报的内容包括对业务和系统的影响是什么,最后由故障指挥官决策后再执行,避免忙中出错。没有进展也是进展,也要及时反馈。对于技术以外的人员反馈,如客服等等。一定不是用技术术语,而是以尽量业务化的语言描述,并且要给到对方大致的预期,比如我们正在做什么,大致多长时间会恢复,如果不能恢复,大约多长时间内会给一个反馈等等。

2.2、快速止血应急预案

基本原则: 在故障处理过程中采取的所有手段和行动,一切以恢复业务为最高优先级,恢复现场止血方案高于寻找故障原因。

  1. 面对问题时,你的第一反应可能是立即开始故障排查过程,试图尽快找到问题根源,这是错误的!****不要这样做。正确的做法是:缓解系统问题是第一要务,尽最大可能让系统恢复服务。

  2. 快速止血而不是根源排查。首先只需要粗定位问题大概即可,然后通过一些应急预案措施(DUCC开关降级、限流、回滚等)来恢复现场。

  3. 线上问题首先思考,是不是上线、业务修改配置等变更导致,拉齐信息。

  4. 发布期间开始报错,且发布前一切正常?什么都不用管,先回滚再说,恢复正常后再慢慢排查。

  5. 应用已经稳定运行很长一段时间,突然开始出现进程退出现象?很可能是内存泄露,默默上重启大法。

  6. 如何确认是不是上线引入的问题呢?同比下上线前(比如昨天、上周)是否也存在一样问题。如果也存在说明跟上线没关系。看看昨天的日志,日志是最靠谱的。可用率会欺骗大家(因为你可能今天治理了可用率,之前可用率是100%,但不一定是真的100%)

  7. 业务、产品、研发多路并行

  8. 快速定位问题时乃应该及时保存问题现场,比如先把JSF服务摘除,但机器保留1台(别重启),保留JVM堆栈信息以便后续进行问题根源分析。

2.3、充分利用现有工具,智能分析定位问题

2.2.1、针对TP99高,定位难:

调用关系复杂,难以快速定位性能瓶颈。可通过工具事先梳理清楚服务间复杂的依赖关系,聚焦瓶颈服务的核心问题,而不是出现问题才去整理链路。

• 如泰山 故障转移等:智能告知这个告警与哪个因素最相关,功能试用中。

• 全域看板,集成UMP采集点,可快速定位是哪一个环节TP99高

• 长链路应用,配置泰山雷达图。

• Pfinder分布式调用链路,作为分析基础

2.2.2、针对调用量突然高

可通过JSF》流量防护》应用和接口》别名&方法名 定位上游哪个应用调用量情况,再采取对应措施,比如更上游沟通,限流策略等

2.2.3、线程分析、JVM、火焰图CPU采样等

泰山平台》故障诊断》在线诊断

2.2.4、业务问题

根据logbook查找,这个没什么好讲的。

通过标准化程序来指导训练技术人员,可以减少解决问题所需的时间。在相同的故障情况下,拥有适当的文档和应急预案SOP可以让您快速检查可能导致故障的所有因果因素。

三、总结

在线上问题修复后,编写COE(Center of Excellence)复盘报告是非常重要的一步。在这个报告中,我们可以回顾整个问题的处理过程,思考如果当时做了哪些可以更快缩短MTTR(Mean Time To Repair)的方法。

具体来说,我们可以从以下几个方面入手:

  1. 分析问题出现的原因:首先需要对问题进行深入的分析,找出问题的根本原因。只有找到问题的根源,才能够采取有针对性的措施来解决问题,从而缩短MTTR。

  2. 总结经验教训:在分析问题的过程中,我们需要总结经验教训,并提出改进建议。这些建议可以包括优化流程、提高效率、加强培训等方面的内容,但不需要列一堆Action,根据2/8法则抓重点即可

  3. 举一反三,杜绝下次发生类似问题:我们需要将本次问题的处理经验和教训应用到其他类似的问题中,避免类似问题的再次发生。

总之,通过深入分析问题、找出根本原因、总结经验教训以及举一反三,我们可以有效地缩短MTTR,保障系统的稳定性和可靠性

参考:

SRE Google运维解密

持续交付2.0

作者:京东物流 冯志文

来源:京东云开发者社区 自猿其说Tech 转载请注明来源

与【稳定性】关于缩短MTTR的探索相似的内容:

【稳定性】关于缩短MTTR的探索

程度和影响范围。其中MTTR(Mean Time To Repair 名为_平均修复时间_)是一个非常重要的指标,它可以帮助我们了解修复系统所需的平均时间。花费太长时间来修复系统是不可取的,尤其对于京东这样的企业来说更是如此。如果MTTR过长,可能会导致用户结算卡单、影响公司收入损失等严重后果。因此...

[转帖]线上问题零发生,闲鱼稳定性问题治理与监控优化

http://blog.itpub.net/28285180/viewspace-2940749/ 一、引言 闲鱼作为C2C电商交易平台,消息系统是导购链路上关键的一环。用户依赖聊天建立买家与卖家的信任,进一步获取商品信息。闲鱼消息的稳定性直接影响到闲鱼用户体验,成交效率。为强化闲鱼消息系统的稳定性

TCP连接的关键之谜:揭秘三次握手的必要性

在这篇文章中,我们将深入探讨TCP连接建立过程中的关键步骤——三次握手。三次握手是确保客户端和服务端之间建立可靠连接的重要过程。通过三次握手,双方可以确认彼此的接收和发送能力,并同步双方的初始序列号,从而确保连接的稳定性和可靠性。文章还解释了三次握手的原因,它可以避免历史重复连接的初始化,确保双方都...

TCP协议的秘密武器:流量控制与拥塞控制

本文将深入探讨TCP协议的关键机制,包括流量控制和拥塞控制,以解密其在网络数据传输中的作用。通过了解TCP协议的工作原理,我们可以更好地理解网络通信的稳定性和可靠性,为我们的网络体验提供更安全、高效的保障。无论您是网络爱好者、技术从业者还是普通用户,本文将为您揭开TCP协议的神秘面纱,带您进入网络传输的奇妙世界。

分布式缓存服务DCS:企业版性能更强,稳定性更高

摘要:企业版性能指标达到业界TOP1,行业领先30%,内核态实现真正多线程。 一.背景介绍 近年来,随着各行业业务需求急速增加,数据量和并发访问量呈指数级增长,原来只能依附于关系型数据库的传统“缓存”逐渐难以支撑上层业务,开源Redis也面临着如“容量有限”、 “可靠性有限”、 “数据重复拷贝,成本

一种接口依赖关系分层方案

正值618大促,各方接口的调用都会大幅度增加。通过梳理接口依赖关系来减少重复调用,对本系统而言,降低了调用数据接口时的线程占用次数,可以有效降级CPU。对调用方来说,减少了调用次数,可减少调用方的资源消耗,保障底层服务的稳定性。

如何从消失的异常堆栈定位线上问题

在618保障大促稳定性过程中,消失的异常堆栈可能会给我们带来严重的麻烦,因为这些堆栈信息是我们解决线上问题的关键之一。如何快速定位问题?想必大家心中都有自己的答案,当然最简单直接的办法还是查找异常堆栈信息。

混沌演练实践(二)-支付加挂链路演练

当前微服务架构下,各个服务间依赖高,调用关系复杂,业务场景很少可以通过一个系统来实现,常见的业务场景实现基本涉及多个上下游系统,要保证整体链路的稳定性,需要尽量减少系统之间的耦合性,避免因为单点失效引起整个链路的故障。

[转帖]Nginx 负载均衡 和 健康检查

https://www.jianshu.com/p/fbb0a81604d9 简介 从 nginx 下载, 到模块安装 关于为什么不使用 ngx_http_upstream_module 测试过 ngx_http_upstream_module 这个模块, 在应用稳定的情况下做做负载均衡还可以. 但

大资金现金管理的利器:稳定币网格做市策略

更多精彩内容,欢迎关注公众号:数量技术宅,也可添加技术宅个人微信号:sljsz01,与我交流。 大资金如何做现金管理 做B圈交易时,通常都会保留一部分以usd计价的稳定币,用来作为保证金的安全垫,或是备用等待可能的交易机会。例如,我们做USDT本位合约的交易,往往不会完全满仓,会预留一部分保证金应对