Kindling-OriginX 在快手 Staging 环境的异常诊断效果分享
· 阅读需 13 分钟
业务可用性问题的快速诊断,历来是行业互联网公司面临的重大挑战,快手也不外如是。Kindling-OriginX的体系化设计理念快速打动了我们的工程师。快手随即开始了内部真实业务的验证落地;落地过程中,Kindling-OriginX能高效覆盖大部分线上问题的快速定界,其中20%可直接给出根因,缩短业务影响时长。未来,我们希望与Kindling-OriginX在异常场景和诊断效率上继续深度合作,进一步缩短业务异常的恢复时长,以及提升工程师研发幸福感。
---周辉,容器云稳定性团队负责人
Originx注:快手团队对根因的要求比较高,比如一般团队遇到请求被锁住,得到锁的代码堆栈就够了,但是快手团队要求更高,更希望知道为什么代码发生了锁住originx目前还只能给出哪段代码堆栈导致锁住。
目的
愿景:缩短对线上稳定性问题的定位时长,帮助业务快速止损,减轻日常问题排查的人力成本。
1.是否能在在公司落地,给实际的问题诊断带来帮助;
2.为问题诊断提供借鉴思路:通过ebpf采集系统层面指标,打通业务请求链路。
结论
OriginX 诊断能力
结论:能够进行问题的定界。
延时耗时示意图
初步分支定界
可以对问题起到初步分支定界的作用,能初步判断出是问题哪个或哪些类别,即 :
1.CPU 执行(onCPU)
- 是否能够下钻
- 对 frequency 问题的判定效果?可以设置 frequency 吗【Originx 目前支持各种频率 CPU 采样,但是需要重启探针】
2.等待调度到 CPU(RUNQ)
- 较少发生,主机有较高的负载的场景
3.读写文件(VFS 的直接读写关联存储相关问题)
- 如何确定拿到的文件和请求是相关
- Originx 通过与请求过程中的系统调用关联,按照时间能精准匹配到请求时的系统调用
4.请求下游节点耗时长(网络调用)
5.锁等待或内存 GC 类型(futex 等)
- 如何确定拿到的这个锁和这个请求有关
- Originx 通过与请求过程中的系统调用关联,按照时间能精准匹配到请求时的系统调用
Originx 不擅长的故障种类:
1.对 CPU 算力分层类、夯机类、硬件类等问题的分析 Kindling-OriginX 诊断相对比较薄弱;
2.对Java 类服务的支持友好,接入 Kindling-OriginX 需要适配公司的 “全链路追踪系统”。