1.背景
线上排故的重要性在于,它可以帮助您快速定位问题并解决它,从而避免了大量的时间和资源浪费。此外,线上排故还可以帮助您更好地了解您的系统,以便您能够更好地维护和管理它。随着互联网技术的发展,越来越多的公司和企业将其业务转移到了线上。这意味着,如果您的系统出现故障,那么它可能会影响到成千上万的用户,比如:由于系统故障会对业务运行和用户体验产生直接影响,也许会直接丢失该用户,所以系统从故障中快速恢复特别重要。因此,快速定位和解决问题变得非常重要。
线上排故是一个非常复杂,而且对个人能力和经验要求特别高的工作,需要长时间不断的积累经验和方法才能达到。
2.排故思路
对于能够通过重启服务或降低服务优先级的,可以优先保障系统恢复对业务的支撑,不会因为一个点的故障导致整个业务链都宕机了。
其次,对于无法绕过的故障,考虑是否可以通过备用路径,优先保障业务正常开展。最后,才是不得不线上改BUG,及时修复系统问题。
3.需要的资源
对于是否能够快速修复BUG,资源对于排故人员非常重要,建立一个排故团队是第一步,初步明确故障范围,将该范围涉及的开发、运维、产品、设计、网络、数据库等整个链条的人员全部包含进来。建立团队就要建章立制,主要解决团队成员中如何配合(比如:信息传递方式、评率等信息),以及解决故障升级条例(这个主要是公司企业对系统划分等级之后,按照等级要求操作)。有了一个团队之后,我们需要对应数据的访问权限,比如服务器访问权限、数据库访问权限、网络访问权限,并且团队中需要有具备操作这些设备软件的人员,必要的时候还应包含具体的专家团队。
快速定位线上系统故障的方法可以包括以下步骤:
4.步骤1:了解问题背景,即可明确大致方向
线上系统故障的定位需要靠监控和日志。一旦超出监控的范围,则排查思路很重要,按照流程化的思路来定位问题,能够让我们在定位问题时从容、淡定,快速的定位到线上的问题。
在上线定位问题时,先分析大致方向是哪出现的问题,内存、CPU、恶意攻击、使用的服务等。最好搞一个监控系统用来实时监控,设置预警值到达一定上限后进行报警,技术人员及时跟进处理以规避此问题。
确认问题:首先,要明确系统中出现了哪些问题。收集用户的反馈和错误报告,了解故障的具体症状和表现形式。
5.步骤2:收集资源
监控系统:使用监控工具来监测系统的关键指标,比如服务器负载、数据库响应时间、网络延迟等。通过监控,可以确定系统是否正常运行,并找到异常指标。
检查日志:查看系统的日志文件,尤其是错误日志和异常日志。日志文件通常会记录系统发生的错误和异常事件,可以提供一些线索来定位故障。
分析代码:检查系统的代码,特别是与故障有关的部分。如果发现有错误的代码逻辑或潜在的问题,对其进行修复或优化。
排查基础设施问题:确认故障是否由基础设施问题引起,比如服务器故障、网络中断或者数据库连接问题。检查服务器状态、网络设备和数据库连接等,确保它们正常运行。
回滚变更:如果故障发生在系统最近的更新或变更之后,考虑回滚这些变更。逐个排查变更的影响,以确定哪个变更导致了故障,并采取适当的措施进行修复。
开展逐步测试:将故障范围缩小,逐步测试系统的各个组件或模块。通过逐一排除正常工作的部分,确定故障发生的具体位置。
寻求专家帮助:如果自己无法解决问题,可以寻求相关领域的专家或技术支持团队的帮助。提供详细的故障描述和相关日志,以便他们更好地帮助你定位和解决故障。
6.步骤3:从资源中分析问题
分析问题,包括对数据的统计分析、趋势分析以及相关性分析,主要是分析故障的发生原因,故障的影响面。通过对故障的分析结果,我们就可对问题的本质进行明确,这是一个程序BUG、或系统问题、或流程问题、或者是策略问题。同时也对问题进行评估,问题的影响面、影响范围,严重程度等问题,我们根据以上的步骤,我们就可以制定问题处理方案,包括调整流程、策略或者更新系统等方式。
7.步骤4:对分析出来的问题及时修改
接以上步骤,我们按照制定的方案进行落地实施,实施后需要及时对实施结果进行评估。评估效果是否满足方案中既定的目标,如果不满足目标是否需要采取备份步骤或者补救措施等等。
完成以上步骤,还应有一个很重要的但是往往被忽略的步骤就是总结或复盘,这不仅仅是为了个人的成长,同时也是积累组织过程资产的过程。我们采用简单/复杂的方式对整个故障的发生、发现、处理、总结等整个流程进行回顾。总结如何避免类似故障的发生,如何跟快速的定位和处理故障等等方面,只要是个人觉得有意义的都是总结的目标,都是我们成长的阶梯。
总结
系统的故障是一个难以回避的问题,但是我们要采用合理的步骤去处理故障,故障的发生之后,一个有条理合理的方案是排故和解决问题的关键。需要我们冷静思考,有条不紊的处理。处理故障的时候切记千万不要眉毛胡子一把抓,这会导致问题没有被处理反而浪费大量的宝贵时间。
请注意,快速定位线上系统故障需要综合运用技术经验、工具和排查方法。具体的步骤可能因系统的复杂性和故障的性质而有所不同。