可观测性实战:从拨云见日到抽丝剥茧快速定位业务响应时延高问题
本文分享借助 DeepFlow 在某头部劵商业务压测场景中通过调用链追踪快速定位问题的过程。解决在容器云内等复杂调用场景中解决传统监控手段覆盖不全面、排障定位无手段等痛点。分享利用 DeepFlow 如何快速在复杂的业务调用过程中抽丝剥茧,快速排除网络问题,定位Pod服务自身业务逻辑问题,展现 DeepFlow 产品价值。
背景介绍
某头部券商OCR识别业务压测多个后端服务Pod时,偶发性业务响应时延高问题,当出现故障时集中某一Pod出现时延3s以上,其他Pod业务响应正常。
客户在内部已经建立了多套容器环境,随着业务规模的增长和技术架构的演进,也面临了若干运维痛点:
• 基础设施监控手段限制导致的排障困难:由于无法采用实时插庄监控全栈链路,基础设施团队不得不依赖日志分析来逐步排查问题,这种方法显著延长了故障诊断的时间。
• 监控数据粒度不足导致追踪能力受限:现有的传统埋点技术提供的监控数据过于粗略,难以实现对基础服务、云组件和网络调用的深入追踪,影响了问题定位的准确性。
• 云原生环境下的网络诊断难题:在复杂的云原生环境中,Kubernetes的内置诊断工具效率不高,缺乏专门针对网络问题的高效诊断工具,导致问题解决缓慢。
本次案例的业务请求路径为:客户端——>Nginx Host——>Nginx-Ingress Pod——>负载多个OCR Pod副本
DeepFlow 分析定位之前,此问题一直为一个悬案,持续了数天无结论:
• ingress设置rr模式,但压测试时其中一个pod请求数量更多
• 从pod 日志响应时长来看,4个pod 会集中这一个pod出现3s以上请求耗时
• ingress改为最小连接,就不会出现集中一个pod请求数量更多的情况
排障过程
拨云见日:快速定位问题
step 1: 利用 DeepFlow 网络-拓扑分析的主要指标,快速排除容器网络问题
根据拓扑网络指标,查看链路上TCP建连,重传比例,失败比例,建连时延等都是正常范围,排除容器网络问题。
step 2: 利用 DeepFlow 追踪-拓扑的响应时延指标量,确定是应用层响应时延高,并找到时延高的POD
无论ingress设置rr或者最小连接,根据追踪拓扑页面中服务的时延指标数据,都发现ingress和某个pod时延高的情况。但实际每个pod请求数量是一样的,都是675个左右请求数,说明无ingress配置无关。
抽丝剥茧:快速定位原因
step 3: 利用 DeepFlow 调用链追踪功能,确定时延出在服务端POD调用本地服务无响应导致
根据调用日志按照时延排序,选出最高时延的调用日志。如下图,从ingress到ocr pod 总耗时5.29s ,其中pod向本地5001 请求资源/ocr/id_card耗时3.12s和 /ocr/kie耗时2.15s。
查看同一个pod正常时延的的调用日志。如下图,从ingress到ocr pod 总耗时1.08s ,其中pod向本地 localhost:5001端口 请求资源/ocr/id_card耗时699.44ms和 /ocr/kie耗时350.41ms。查看多个类似调用日志总结出,出现本地服务返回给pod信息时,时延正常。
通过以上三步快速得出结论,ingress设置负载均衡模式问题并未得到复现,每次更改最小连接或RR模式,并不影响调度均衡。在本案例中并不是导致时延的根因。而是某个节点POD调用本地 localhost:5001端口请求资源时,未返回信息导致时延。
价值总结
DeepFlow 在整个案例的价值点是什么?
• 利用 DeepFlow 零插码的网络路径,分钟级排除容器网络的问题。
• 利用 DeepFlow 零插码的调用追踪,分钟级确定服务逻辑的根因。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
开源日报 | Ubuntu 24.10 Beta;长城汽车RISC-V车规级MCU芯片点亮;苹果补税130亿欧元;Scaling Law正在走入死胡同;高通拟收购英特尔
欢迎阅读 OSCHINA 编辑部出品的开源日报,每天更新一期。 # 2024.9.23 今日要闻 Ubuntu 24.10 "Oracular Oriole" 开启 Beta 测试 Ubuntu 24.10 "Oracular Oriole" 发布了首个 Beta 测试版,涵盖 Ubuntu 桌面、服务器和云产品等镜像,以及Edubuntu, Kubuntu, Lubuntu, Ubuntu Budgie,Ubuntu Cinnamon, UbuntuKylin, Ubuntu MATE, Ubuntu Studio, Ubuntu Unity, 和 Xubuntu 等一系列风味版本。 RISC-V车规级MCU点亮,长城汽车将在南京设立芯片研发公司 9月20日,长城汽车正式宣布其联合开发的RISC-V车规级MCU芯片——紫荆M100已完成研发并成功点亮。紫荆M100是长城汽车牵头联合多方研发的首颗基于开源RISC-V内核设计的车规级MCU芯片。它采用模块化设计,内核可重构,4级流水线设计使其具备更快的处理速度和更少的耗时,同时便于未来的升级扩展。满足功能安全ASIL-B等级要求,支持国...
- 下一篇
请不要自己写,Spring Boot非常实用的内置功能
在 Spring Boot 框架中,内置了许多实用的功能,这些功能可以帮助开发者高效地开发和维护应用程序。 松哥来和大家列举几个。 一 请求数据记录 Spring Boot提供了一个内置的日志记录解决方案,通过 AbstractRequestLoggingFilter 可以记录请求的详细信息。 AbstractRequestLoggingFilter 有两个不同的实现类,我们常用的是 CommonsRequestLoggingFilter。 通过 CommonsRequestLoggingFilter 开发者可以自定义记录请求的参数、请求体、请求头和客户端信息。 启用方式很简单,加个配置就行了: @Configuration public class RequestLoggingConfig { @Bean public CommonsRequestLoggingFilter logFilter() { CommonsRequestLoggingFilter filter = new CommonsRequestLoggingFilter(); filter.setIncludeQue...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- MySQL8.0.19开启GTID主从同步CentOS8
- Mario游戏-低调大师作品
- Linux系统CentOS6、CentOS7手动修改IP地址
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Docker快速安装Oracle11G,搭建oracle11g学习环境