Debug
Posted Xinli
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Debug相关的知识,希望对你有一定的参考价值。
为什么要进行检测
在检测的过程中一方面可以帮助我们理解我们的系统,更重要的是,这可以为客户提供卓越运营的体验。帮助我们更了解我们给客户的体验是什么样的。
在amazon.com购物时,高延迟会对客户造成非常差的购物体验,从而降低转换率。对使用AWS的用户,他们需要的是高可用性和低延迟。
在Amazon,我们不仅仅去考虑平均延迟,而是会去更加关注延迟的异常值。比如P99.9或是P99.99这样的指标。之所以这样,是因为在降低P99之后,平均延迟也同样会降低,但是降低了平均延迟,P99并不一定会降低。
更加关注高百分位延迟的一个原因是,某个服务中的高延迟可能会在其他服务中产生乘法效应。即,如果调用链深处的服务的latency增加,最终用户可能会感受到很长的延迟。
Amazon的大型系统是由许多协同工作的服务组成。每个服务都由一支单独的团队开发和运营。拥有服务的团队称为service owner. 无论担任任何职位,该团队的每个成员均会像服务的owner护额operator一样思考。作为service owner,团队会设定拥有的每个service的运营绩效相关的目标。团队还需要确保可以看到service的运行状况,以保证我们达成这些目标、处理出现的任何问题和促使自己在第二年达成更高的目标。为了设定目标和获得这种可见性,团队必须对系统进行检测。检测还促使我们能够有策略的探测和应对运营事件。
Instrumentation feeds data into operational dashboard, so that operators can view real-time metrics. It also feeds data into alarms. 运营者使用详细的检测输出快速诊断出错的原因,这样一来,我们可以迅速想办法先暂时缓解问题,并记下该问题,之后进行处理,防止该问题再次复发。Without good instrumentation throughout the code, we sink precious time into diagnosing problems.
检测什么
为了获得必须的metrics,service owner必须从多个方面衡量operational performance,以便从多个角度了解各组件的端到端具体表现。比如,customer通过Load Balancer调用某个service,该服务会与remote cache和remote database通信。We want each component to emit metrics about its behavior. We also want metrics on how each component perceives the behavior of other components. 将来自所有这些角度的metrics汇集起来时,service owner就能迅速查明问题的root cause。
许多AWS服务都会自动提供一些resource的运营建议。例如,DDB提供有关成功率,错误率和延迟的Amazon CloudWatch metrics。但是,当我们构建使用这些服务的系统时,我们需要获得高得多的visibility,以便了解系统的具体表现。检测需要显示代码来记录任务要执行多长时间,某些代码路径多久执行一次,与任务执行的工作相关的元数据和任务的那些部分成功或失败。如果团队未添加显式检测,则service owner将被迫把自己的服务作为黑盒来运营。
举个栗子
以上是关于Debug的主要内容,如果未能解决你的问题,请参考以下文章