Jaeger的经典BUG

这篇具有很好参考价值的文章主要介绍了Jaeger的经典BUG。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前端,笔者在使用Jaeger进行Trace监控的时候,当数据量增大到一定数量级时,出现了一次CPU暴增导致节点服务器挂了的经典案例,这里对案例进行一个简单的抽象,供大家参考:

首先通过pprof对耗时的函数进行定位:

Jaeger的经典BUG原创,后端

发现是在Trace初始化的调用了HostIP方法特别耗时

然后看了下函数的实现:

Jaeger的经典BUG原创,后端

找到了问题的疑似点:net.InterFaces

这个方式会调用底层的系统函数获取本机的IP,会打开一个socket,会不会因为大量打开socket,把CPU占满了呢?

做个实验:

把这个方法抽离出来,在服务器上做个高频调用!

Jaeger的经典BUG原创,后端

日志如下:

Jaeger的经典BUG原创,后端

cpu如下:

Jaeger的经典BUG原创,后端

果然是它!确实在hostIP这里耗时

那看实锤了,就是因为每次数据上报都会一个协程来出来,协程中会新建一个jaeger trace来跟踪,jaeger每次都找一下本机IP,然后打开了很多的socket,然后机器CPU飙升,出现了Node的问题

那看看jaeger为啥会有这个问题

跟踪一下git上的提交记录:

啊,原来jaeger在某个版本已经修复了!把之前获取的IP放在内存里,下次就不再重复获取了!

Jaeger的经典BUG原创,后端

难道有项目遇到了这个问题了?

看看commit

Jaeger的经典BUG原创,后端

是在修复401问题,看下401问题是啥?

Jaeger的经典BUG原创,后端

原来是另一个问题,这个HostIP其实有一个scoreAddr方法,当一个服务器有两个ip,比如内网ip和外网ip,按照这个方法的逻辑,会优先外网ip,但一个集群内,可能只有一个入口有外网ip,其他都是内网ip,这个时候入口机的ip和内网ip就适配了,jaeger信息也会异常,所以提出了这个问题,并进行修复

Jaeger的经典BUG原创,后端

我们看看jaeger开发者这么说

Jaeger的经典BUG原创,后端

Jaeger的经典BUG原创,后端

原来开发者一直也是这个理念,而且在java的客户端已经实现了,但golang一直没有更新

额,原来大家都有拖延症!

搞定!文章来源地址https://www.toymoban.com/news/detail-687271.html

到了这里,关于Jaeger的经典BUG的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 多种方法解决leetcode经典题目-LCR 155. 将二叉搜索树转化为排序的双向链表, 同时弄透引用变更带来的bug

    这段代码实际上是一个常见的算法题目的解法,目标是将一个二叉搜索树转换为一个排序的双向链表。整个过程是通过中序遍历来实现的,遍历过程中修改节点的左右指针来构建双向链表。代码中使用了一个额外的节点 dummy 来帮助构建双向链表,并使用 pre 节点来保存前一个

    2024年02月06日
    浏览(46)
  • 强推Linux高性能服务器编程, 真的是后端开发技术提升, 沉淀自身不容错过的一本经典书籍

    目录 第1章 TCP/IP协议 1.1 TCP/IP协议族体系结构以及主要协议 1.1.1 数据链路层 1.1.2 网络层 1.1.3 传输层 1.1.4 应用层 1.2 封装 1.3 分用 1.5 ARP协议工作原理 1.5.1 以太网ARP请求/应答报文详解 1.5.2 ARP高速缓存的查看和修改 1.5.3 使用tcpdump观察ARP通信过程所得结果如下 本篇核心关键所在

    2024年02月07日
    浏览(50)
  • 使用Jaeger进行分布式跟踪:学习如何在服务网格中使用Jaeger来监控和分析请求的跟踪信息

    🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 🌊 《IDEA开发秘籍专栏》学会IDEA常用操作,工作效率翻倍~💐 🌊 《100天精通Golang(基础入门篇)》学会Golang语言

    2024年02月08日
    浏览(40)
  • jaeger部暑 (elasticsearch+kafka)

    服务器IP 部暑角色 192.168.11.100 kafka 、elasticsearch 、jaeger-collector、 jaeger-ingester、 jaeger-agent、 jaeger-query、 hotrod、spark dependencies jaeger组件介绍: jaeger-client:jaeger 的客户端,实现了opentracing协议; jaeger-agent:jaeger client的一个代理程序,client将收集到的调用链数据发给agent,然后

    2024年02月07日
    浏览(47)
  • docker部署jaeger+es+kibana链路追踪

    近来在学习到Jaeger链路追踪的时候,顺带学习了一下如何去部署Jaeger在服务器上 Jaeger 受到Dapper和OpenZipkin的启发,是由Uber Technologies作为开源发布的分布式跟踪系统。它用于监控和故障排除基于微服务的分布式系统,包括: 分布式上下文传播 分布式事务监控 根本原因分析 服

    2024年02月15日
    浏览(32)
  • jaeger+elasticsearch(cassandra ) 单机部署以及(400)报错

    Jaeger 快速体验 官网下载地址 https://www.jaegertracing.io/download/ GitHub 下载地址 https://github.com/jaegertracing/jaeger/releases 下载二进制文件压缩包后,运行解压后的 all-in-one 文件即可。 jaeger-all-in-one 采用内存存储数据,专为快速本地测试设计。 example-hotrod 为示例应用程序,运行访问,

    2024年02月07日
    浏览(49)
  • Grafana系列-统一展示-9-Jaeger数据源

    Grafana 系列文章 Grafana内置了对Jaeger的支持,它提供了开源的端到端分布式跟踪。本文解释了针对Jaeger数据源的配置和查询。 关键的配置如下: URL: Jaeger 实例的 URL, 如: http://localhost:16686 或 http://localhost:16686/trace/ Enable Node Graph: ✔️. 一旦启用,Grafana会在 trace 视图上方显示 Nod

    2024年02月04日
    浏览(38)
  • 全面掌握 Jaeger 分布式调用链路跟踪理论和实战,Go 为所有使用 go-resty 库发起 HTTP 请求集成链路跟踪 jaeger(附源码)

    全面掌握 Jaeger 分布式调用链路跟踪理论和实战,Go 为所有使用 go-resty 库发起 HTTP 请求集成链路跟踪 jaeger(附源码)。 介绍一个开源的分布式跟踪系统 Jaeger,首先从理论基础知识开始学习,将学习如何在 HTTP 请求中集成链路跟踪,以及如何在 GORM 框架实现,最后学习 go-ze

    2024年02月13日
    浏览(51)
  • grpc中间件之链路追踪(otel+jaeger)

    参考文档 https://github.com/grpc-ecosystem/go-grpc-middleware/blob/main/examples/client/main.go https://github.com/grpc-ecosystem/go-grpc-middleware/blob/main/examples/server/main.go https://github.com/open-telemetry/opentelemetry-go/blob/main/example/jaeger/main.go 直接展示代码: client代码: server代码(这里只展示核心代码): myInte

    2024年02月16日
    浏览(48)
  • OpenShift 4 - 可观测性之用 OpenTelemetry+Jaeger 实现 Distributed Tracing

    《OpenShift / RHEL / DevSecOps 汇总目录》 说明:本文已经在支持 OpenShift 4.13 的环境中验证 说明 : 本文使用的测试应用采用的是 “手动 Instrumentation” 方式在应用代码中通过 OpenTelemetry 的 API 获取的跟踪数据。应用代码 https://github.com/rbaumgar/otelcol-demo-app/blob/main/src/main/java/org/acme

    2024年02月15日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包