0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

当系统闹脾气:用「因果推断」哄稳技术的心

京东云 来源:jf_75140285 作者:jf_75140285 2024-08-14 10:42 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

背景

系统稳定性问题往往涉及复杂的因果关系。例如,一个系统的崩溃可能由多个因素引起,包括硬件故障、软件bug、业务配置、外部攻击或其他操作不当等。理解这些因素之间的因果关系对于系统稳定性建设至关重要。



举个例子:服务雪崩 A服务调用B服务之间发生了雪崩效应,原本B本身有点小问题,而A由于内置的各种容错和重试机制,反而加剧了B的服务负载,导致其出现更多的失败。这些失败触发了A的无限重试,使得情况进一步恶化,最终引发了雪崩。在这一过程中,究竟是A的重试导致的B的过载,还是B的原有问题引发了A的重试,形成了一个因果循环。这里看谁是因谁是果呢? 在这种情况下,我们可以认为A和B之间发生的是一种相互作用,导致了一个负反馈循环,最终引发了雪崩效应。具体来说,A和B之间的因果关系可以这样理解: B的小问题是初始因:B服务的小问题是触发事件,它导致了A服务的一些请求失败。 A的容错和重试机制是中间因:通常,容错和重试是为了提高系统的稳定性。然而,在这种情况下,A服务的容错机制和重试策略反而放大了问题,因为它们没有正确地识别到B服务已经过载的情况。 B的服务过载是直接果:A服务无限重试导致B服务的负载急剧增加,这是问题恶化的直接结果。 雪崩效应是终极果:由于A的过度重试和B的服务过载,整个系统最终经历了雪崩效应,这是整个事件链的最终结果。 在这个场景中,我们可以说B服务的小问题是初始的“因”,而A服务的无限重试是一个关键的“因”,它放大了B服务的问题,并导致了最终的“果”——雪崩效应。 要解决这个问题,我们需要在因果链的不同环节进行干预: 在B端:提高服务的容错能力,确保小问题不会导致服务响应变慢或失败。 在A端:实施智能的重试策略,比如指数退避,或者在检测到下游服务B过载时,停止重试。 监控和警报:强化监控系统,确保在发生过载前能够及时发现问题并触发警报。 流量控制:在系统中实施流量控制和熔断机制,以避免服务的过载。 通过这样的干预,我们可以打破这种负反馈循环,避免类似的雪崩效应发生。

一:因果推断简介

因果关系学习皮毛中~~~~~~

1)因果推断的基本概念

因果关系,又称为因果性,简称因果,是一个事件(即“因”)和第二个事件(即“果”)之间的作用关系,其中后一事件被认为是前一事件的结果。一般来说,一个事件是很多原因综合产生的结果,而且原因都发生在较早时间点,而该事件又可以成为其他事件的原因。

统计相关性是指两个或多个变量之间的关联程度。如果两个变量通常一起变化(无论是同向还是反向变化),它们就是相关的。然而,相关性并不意味着因果关系。例如,冰淇淋销量的增加与溺水事件的增加可能相关,但这并不意味着冰淇淋销量的增加导致了溺水事件的增加。

2)因果推断方法-潜在结果框架

潜在结果框架是因果推断中的一个核心概念,它基于对“如果情况不同,会发生什么”的假设性问题的考虑。在这个框架下,每个个体都有一系列的潜在结果,这些结果对应于可能的不同干预或处理。对于任何个体,我们只能观察到其中一个潜在结果——即在实际发生的干预下观察到的结果。潜在结果框架的关键是比较同一个个体在实际干预下的观察结果和在假设的其他情况下的未观察(潜在的)结果。

潜在结果框架的关键组成部分

处理变量:一个二元变量,通常用 ( T ) 表示,其中 ( T=1 ) 表示个体接受了干预,( T=0 ) 表示个体没有接受干预。

潜在结果:对于每个个体,都有两个潜在结果:( Y(1) ) 是个体在 ( T=1 ) 时的潜在结果,( Y(0) ) 是个体在 ( T=0 ) 时的潜在结果。

因果效应:对于个体 ( i ),其因果效应定义为 ( Y_i(1) - Y_i(0) ),即个体在接受干预与未接受干预两种情况下潜在结果的差异。

因果推断的挑战

基本问题:我们无法同时观察到同一个个体在接受和未接受干预下的两种潜在结果,因此无法直接计算个体的因果效应。

解决方法:通过对比实验组和对照组来估计平均因果效应(ATE),或者使用其他统计方法来估计个体层面或群体层面的因果效应。

二:因果推断在稳定性分析中的应用

1)系统稳定性问题的复杂性

多变量交互:不同的系统组件和操作可能交织在一起,使得问题难以隔离。例如,数据库延迟可能与缓存策略不当相互作用,导致性能瓶颈。

动态环境:应用程序运行在不断变化的环境中,负载波动、配置更改、依赖服务的可用性等都可能影响稳定性。这意味着一个问题可能只在特定的环境条件下出现,而在其他情况下无法观察到。

非确定性行为:并发和网络通信等因素引入的非确定性使问题难以复现和分析。例如,一个由于竞争条件导致的偶发性错误可能只在特定的线程调度顺序下发生。

资源限制和泄漏:内存泄漏、文件描述符耗尽、线程死锁等资源管理问题可能随时间积累,最终导致应用程序崩溃或性能下降。

代码和架构问题:应用程序的代码质量和架构设计也会影响其稳定性。例如,没有遵循设计原则和模式可能导致系统脆弱,难以适应变化。

用户行为和数据驱动的问题:用户的特定行为或特定的数据输入可能触发隐藏的缺陷,这些问题在标准测试中可能没有被发现。

监控和日志不足:如果监控系统不能提供足够的可见性,或者日志不够详细,那么诊断问题可能会变得非常困难。

2)因果推动与代码架构梳理

"因果推断"是一种强大的问题解决框架,它可以帮助开发者理解和解决技术问题,尤其是在系统稳定性和错误排查方面。以下是因果推断与技术代码梳理之间的几个关联点:

1.问题诊断

◦因果推断:用于识别和分析导致软件缺陷或性能问题的根本原因。

◦代码链路梳理:提供一个清晰的视图,展示代码中的各个组件是如何相互关联和交互的。

2.错误和性能分析

◦因果推断:帮助开发者理解特定的代码变更或外部因素是如何影响系统性能的。

◦代码链路梳理:使开发者能够追踪性能瓶颈可能存在的路径,从而更准确地定位问题所在。

3.代码维护和优化

◦因果推断:在进行代码重构或优化时,预测代码变更可能带来的影响,以及这些影响如何传播到整个系统。

◦代码链路梳理:为重构提供了必要的信息,明确了哪些部分的代码需要更新,以及这些更新如何与系统的其他部分相互作用。

4.风险管理

◦因果推断:在引入新功能或进行大规模更新时,评估可能出现的风险以及这些风险的潜在后果。

◦代码链路梳理:确保开发者了解新变更将影响哪些代码路径,以便进行适当的测试和风险缓解。

5.测试策略

◦因果推断:分析测试失败的原因,确定哪些代码或数据可能导致了问题。

◦代码链路梳理:帮助制定有效的测试计划,确保关键路径得到充分的测试覆盖。

6.故障恢复

◦因果推断:在系统发生故障时,通过逻辑分析追溯到引发问题的初始事件。

◦代码链路梳理:指导故障恢复过程,通过理解代码间的依赖关系来确定修复策略。

案例:API代码链路梳理,关键环节12345对应的「因」和最终的67「果」。



简而言之,因果推断为开发者提供了一种分析和解决软件问题的思维工具,而代码链路梳理则提供了必要的结构信息和上下文,使得因果关系能够在代码的具体实现中被识别和理解。两者相辅相成,共同支持软件的稳定性和可维护性。

3)案例:RPC服务超时时间和重试次数最佳设置

背景

我们想要测试RPC通信调整超时时间和重试次数是否能提高整体的服务稳定性和TP99性能。

实验设计

1.处理变量(Treatment):不同的超时时间和重试次数配置。例如,我们可以设置两个处理变量,( T_{timeout} ) 代表超时时间,( T_{retries} ) 代表重试次数。

2.潜在结果(Potential Outcomes):每个服务在不同超时时间和重试次数配置下的稳定性指标,如成功响应率、TP99响应时间、系统吞吐量等。

3.因果效应(Causal Effect):对于每个服务实例 ( i ),其因果效应可以定义为在特定超时和重试配置下的稳定性指标与默认配置下稳定性指标的差异。

4.因果推断的挑战:不同的服务可能对超时和重试的敏感度不同,而且服务间可能存在依赖关系,这使得直接比较不同配置的影响变得复杂。

5.解决方法:我们可以设计一个随机对照试验,随机选择服务实例并为它们分配不同的超时时间和重试次数配置。为了控制混杂因素,我们可以在开始实验前对服务进行分层,确保每一层中的服务都有不同配置的代表。

复杂性增加

•服务分类:根据服务的重要性和稳定性需求,将服务分为不同的类别,并为每个类别设计不同的超时和重试策略。

•流量模式:流量可能在一天中的不同时间有显著变化,这可能需要动态调整超时和重试设置。

•依赖服务的状态:如果一个服务依赖于另一个服务,那么依赖服务的超时和重试设置可能需要根据被依赖服务的状态进行调整。

数据分析

在实验运行一段时间后,我们会收集相关的指标数据,并使用统计方法来分析不同配置对服务稳定性的影响。比如,来确定不同超时和重试配置对成功响应率的影响是否显著。

结果应用

如果我们发现某些配置显著提高了服务的稳定性和性能,我们可以将这些配置作为新的标准应用到生产环境中。此外,我们还可以根据服务的分类和流量模式,设计一个动态调整策略,以实时优化超时和重试设置。



三:团队视角下的因果推断

1)团队与因果推断

在团队中,因果推断是一种重要的工具,它帮助工程师理解和解决复杂系统中的问题,以及预防未来的故障。

2)事故管理和因果推断

在事故管理中,因果推断帮助团队确定故障的根本原因,并评估不同因素对故障的贡献度。这种方法可以减少推测和偏见,提高故障分析的准确性。

3)因果推断在团队实践中的整合

1.事故后分析的改进:使用因果推断来分析故障,以便更全面地理解故障发生的条件和原因。

2.预防措施和风险评估:利用因果模型预测潜在的风险点,制定有效的预防措施。

3.改进监控和警报系统:基于因果关系,设计更为精准的监控指标和警报机制。

4)故障预防与因果推断

1.容量规划:应用因果推断分析历史数据,预测系统负载,从而进行有效的容量规划。

2.压力测试和因果关系:使用压力测试结果更新因果模型,以更好地理解系统在高负载下的行为。

3.预测性维护:利用因果关系模型识别可能导致未来故障的信号,进行预测性维护。

5)案例:因果推断在团队实践中的应用

故障场景:服务突然遭遇性能下降,用户的请求延迟增加,部分请求超时。

1.数据收集:团队收集了相关的监控数据、日志文件和系统指标。

2.初步分析:初步分析提示可能是数据库查询性能下降导致的问题。

3.因果推断:团队使用因果推断方法分析了数据库性能问题与最近的代码变更、配置更新、流量增长之间的关系。

4.验证假设:通过回滚最近的变更和调整数据库配置,团队验证了因果关系。

5.改进监控:基于发现的因果关系,团队增加了对关键数据库性能指标的监控。

6.预防措施:团队还引入了新的代码审查和测试流程,以预防未来类似的性能问题。

通过这个过程,团队能够不仅解决了即时的故障,还加强了系统的长期稳定性和可靠性。



四、因果推断和5Whys

1)5 Whys

5Why分析法,也叫做“5问法”,就是对于一个问题点,连续问5个为什么,以追求其真正原因,这种方法最初由丰田的创始人丰田佐吉提出的。5Why分析法简单易行,一句话描述就是:沿着“为什么?...为什么?...”的因果路径,逐一提问,以此来挖掘出问题的真正原因。

注意事项:

关键不在于具体的数字“五”,而是要不断询问,直到达到并消除根本原因。

5Why连续追问,每次追问得出的原因一定是要和上一级产生直接、唯一、可控、或充要或充分条件或最高影响的答案,否则就不能继续下去,也追问不到问题的本质了。

wKgaoma8GY-APgb8AAtsy5waVEc070.png



2)关系

尽管因果推断和“5个为什么”在方法论上有所不同,但它们的目标相似:都是为了理解事件之间的因果关系。两者都可以用于识别问题的原因,并帮助制定解决方案。

因果推断提供了一种科学和定量的方法来确定因果关系,适合于需要精确测量和验证假设的场景。

5个为什么提供了一种更快速、更基于直觉的方法来探索和识别可能的因果链,适合于需要快速诊断和解决问题的场景。

在实际应用中,两者可以结合使用。例如,可以先通过“5个为什么”快速识别潜在的因果链,然后通过因果推断的方法来验证这些因果关系是否成立。这种结合使用可以使问题解决过程既高效又有深度。

五、结论

因果推断在稳定性保障中的作用和潜力是显著的。通过有效地应用因果推断,能够:

1.提高故障诊断的准确性:准确地识别系统性能问题的根本原因,而不仅仅是表面现象。

2.缩短故障恢复时间:快速定位问题源头,减少系统故障的持续时间,提高服务的可用性。

3.优化资源分配:精确地识别问题,避免资源浪费在不相关的调查和修复上。

4.预防未来故障:通过理解问题的因果关系,可以更好地预防未来的系统故障。

5.提升决策质量:为管理层提供基于数据的决策支持,优化技术和业务流程。

因果推断的潜力还未完全挖掘,未来的研究和实践改进有以下可能性:

1.数据治理:建立更严格的数据治理流程,确保数据质量,为因果推断提供坚实基础。

2.多元数据源整合:整合更多类型的数据源,提高分析的全面性和深度。

3.自动化流程:自动化因果推断流程,减轻人工负担,提高响应速度。

因果关系学习皮毛中~~~~~~,如文中知识有误,欢迎指正,评论、一起探讨,谢谢!

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    高精密相射频测试线缆:毫米波测试的可靠保障

    PKR系列高精密射频线缆满足18GHz-40GHz宽频带相需求,采用高纯铜线、低损耗材料及精密连接技术,确保高精度测试。
    的头像 发表于 12-09 10:56 16次阅读

    镜头核心技术解析与应用

    镜头(TelecentricLens)是一种专为精密光学成像设计的镜头系统,其核心在于消除传统镜头中常见的透视失真和放大倍率变化问题。该技术广泛应用于工业检测、计量测量和机器视觉等领域,通过确保
    的头像 发表于 12-08 17:25 116次阅读
    远<b class='flag-5'>心</b>镜头核心<b class='flag-5'>技术</b>解析与应用

    还在为继电器&amp;apos;闹脾气&amp;apos;停机发愁?别急,耐达讯自动化PROFIBUS总线光端机来给你支招!

    都在上演的"继电器闹剧"。 为啥继电器总爱"耍脾气"?*  PROFIBUS总线里,PLC是"指挥官"(主站),继电器是"执行小弟
    的头像 发表于 11-14 15:38 1465次阅读
    还在为继电器&amp;apos;<b class='flag-5'>闹脾气</b>&amp;apos;停机发愁?别急,耐达讯自动化PROFIBUS总线光端机来给你支招!

    船电不稳,真的是变压器选错了吗?

    船东老周最近有点烦:轴发功率明明够,可一启动侧推,厨房冰箱就“罢工”;靠港换市电,配电板“啪”地跳闸,船员连夜摸黑查线。他挠头:“CSD船变压器也换了硅钢片铁芯,怎么还是闹脾气?”先别急着换设备
    的头像 发表于 09-06 11:46 360次阅读
    船电不稳,真的是变压器选错了吗?

    AI智能体的技术应用与未来图景

    AI智能体技术正经历从感知智能向认知智能的范式跃迁。其技术架构已形成感知、决策、执行的三层融合体系:感知层通过多模态融合技术整合视觉、语音及环境数据,构建环境动态理解能力;认知层采用神经符号
    的头像 发表于 07-24 11:04 817次阅读

    设备总 “闹脾气”?中设智控这套方案让它乖乖听话

    生产制造企业想让设备运行、降成本、提效率,中设智控设备状态监测方案就是 “最优解” 。不管是电机、流水线设备,都能被精准监测。赶紧给设备配上 “智能保镖”,让生产一路顺畅,效益蹭蹭涨!
    的头像 发表于 07-18 13:52 369次阅读
    设备总 “<b class='flag-5'>闹脾气</b>”?中设智控这套方案让它乖乖听话

    CAN握手EtherCAT:视觉检测系统的“双芯合璧”时代来了

    在汽车制造的高速生产线上,设备间的“语言不通”曾是工程师们的头疼事:CAN总线像踏实的老司机,稳扎打传输传感器数据;而EtherCAT网关则是追求极致速度的“闪电侠”,主导着实时控制的重任。视觉
    发表于 07-15 15:37

    黑芝麻智能与文大模型技术合作升级

    近日,文大模型正式开源,黑芝麻智能即日起快速启动与文大模型技术合作。
    的头像 发表于 07-04 17:24 1021次阅读
    黑芝麻智能与文<b class='flag-5'>心</b>大模型<b class='flag-5'>技术</b>合作升级

    化工厂电动机保护升级记:Profinet遇上DeviceNet网关

    最近我们生产部遇到个有趣的技术挑战——车间里那几十台低压电动机总是"闹脾气",堵转、过载故障频发,但传统保护系统反应总慢半拍。维修班长老王叼着螺丝刀吐槽:"这些马达比我家孩子还难!"
    的头像 发表于 05-26 18:50 236次阅读
    化工厂电动机保护升级记:<b class='flag-5'>当</b>Profinet遇上DeviceNet网关

    重磅推出技术Profinet转CANopen网关智能工厂解决方案!

    重磅推出技术 Profinet转CANopen网关智能工厂解决方案 ! 技术Profinet转CANopen网关应运而生——它如同一座智能桥梁☺,打通两大主流工业协议,让异构网
    的头像 发表于 03-28 15:30 471次阅读
    重磅推出<b class='flag-5'>稳</b>联<b class='flag-5'>技术</b>Profinet转CANopen网关智能工厂解决方案!

    为什么无法从源代码推断OpenVINO™构建中的VPU?

    为什么无法从源代码推断OpenVINO™构建中的 VPU
    发表于 03-06 07:12

    拌合站智能监测管理系统在水拌合站质量管理中起到关键作用

    分析和统计展示功能,成为提升水站质量的重要技术工具。本文将探讨智能监测管理系统在水站中的关键作用,并分析其系统优势。       1、数
    的头像 发表于 02-19 09:13 551次阅读

    智能水拌合站监测质量管理系统显著改善水拌合站质量管理水平

    随着建筑行业对工程质量要求的不断提高,智能化技术的应用成为提升生产质量管理的关键。尤其在水拌合站领域,传统的质量管理方式已经难以满足高效、精准的生产需求。智能水拌合站监测质量管理系统
    的头像 发表于 01-22 17:21 634次阅读
    智能水<b class='flag-5'>稳</b>拌合站监测质量管理<b class='flag-5'>系统</b>显著改善水<b class='flag-5'>稳</b>拌合站质量管理水平

    拌合站管理系统成为项目质量管理中的重要关键技术

    施工效率和管理水平,越来越多的高速公路项目引入了水拌合站管理系统。这些系统通过先进的设计原理和技术框架,实现了高效的数据采集、分析和预警功能,从而保证了高速公路建设的顺利进行。本文将
    的头像 发表于 01-22 11:18 630次阅读
    水<b class='flag-5'>稳</b>拌合站管理<b class='flag-5'>系统</b>成为项目质量管理中的重要关键<b class='flag-5'>技术</b>

    Aigtek高压放大器在激光技术研究中的应用

    实验名称: 技术研究 测试目的:激光技术选取一个稳定的参考频率标准,待锁定的激光频率偏离特定的频率标准时,设法进行鉴别并产生能反映
    的头像 发表于 01-15 11:04 722次阅读
    Aigtek高压放大器在激光<b class='flag-5'>稳</b>频<b class='flag-5'>技术</b>研究中的应用