硬核干货——《中小企业 AI 实战指南》免费下载! 了解详情
写点什么

报告揭示 OpenTelemetry 对 Go 的性能影响

作者:Craig Risi

  • 2025-07-01
    北京
  • 本文字数:1089 字

    阅读完需:约 4 分钟

大小:540.15K时长:03:04
报告揭示OpenTelemetry对Go的性能影响

来自可观测性平台Coroot的一项新基准研究揭示了在高吞吐量Go应用程序中实施OpenTelemetry的性能成本。研究结果表明,尽管 OpenTelemetry 提供了宝贵的追踪级洞察,但它引入了显著的开销,使 CPU 使用率增加了约 35%,并增加了负载下的网络流量和延迟。

 

该研究使用一个由内存数据库支持的简单 HTTP 服务,在相同的负载条件下(每秒 10,000 个请求)比较了基线性能和完整的 OpenTelemetry 仪器性能。在四个 Linux 主机上的Docker容器中进行的运行揭示了几个发现:启用追踪使 CPU 使用量从 2 核增加到 2.7 核(大约 35%),内存使用量增加了 5-8MB,99 百分位延迟从大约 10 毫秒略微增加到 15 毫秒。此外,追踪数据导致大约 4MB/s 的出站网络流量,突出了完整请求级遥测的资源影响。

 

该研究还对比了基于SDK的追踪和基于eBPF的方法,尽管应该注意,因为 Coroot 销售基于 eBPF 的可观测性解决方案。eBPF 避免了修改应用程序代码,即使在仅收集指标的重负载下,资源消耗也低于 0.3 核。Coroot 得出结论,尽管 OpenTelemetry 的 SDK 提供了详细的追踪可见性,但它带来了可测量的开销,必须与可观测性需求相权衡。他们认为,对于优先考虑低延迟并使用受限资源的用例,基于 eBPF 的实现可能是一个更合适的折衷方案。

 

这一评估在 Go 社区引发了讨论。Hacker News上的讨论表明,可以通过优化 SDK 内部实现性能提升,如使用更快的时间函数、用原子替换互斥锁或有系统地封送。在Reddit上,用户指出即使在零抽样的情况下,由于上下文传播和跨度管理,仍然存在显著的开销。这些观点强调了一个更广泛的认可,即尽管 OpenTelemetry 带来了重要的洞察,但它也引入了需要仔细实施和调整的资源权衡。

 

一位用户FZambia表示:

 

“我最初对跟踪的开销(包括资源方面和检测过程方面)和使用参数的适当检测应用持怀疑态度。随着时间的推移,我越来越多地看到追踪帮助诊断问题、调查事件的例子。可视化在这里有很大的帮助——当你有追踪时,跨团队的沟通将大大简化。尽管如此,我还是看到跨度(span)在标签中包含了如此多不必要的数据,而在每个请求上收集它们似乎要做很多工作,而这些跨度中的 99.999%你并没有使用到。开启采样也是有争议的——当你需要时找不到跨度(有时即使请求成功也需要)。所以阅读对跟踪开销的详细调查非常有用,谢谢!”

 

Coroot 的基准提供了有价值的数据,表明 Go 中的 OpenTelemetry 以可测量的成本提供了强大的可观测性,大约有 35%的 CPU 开销,并在负载下增加了延迟。社区的反应表明,优化正在进行中,但是团队仍然应该平衡跟踪级可见性与性能约束的需求,并在适当时探索更轻量级的选项,如基于 eBPF 的度量指标。

 

原文链接:

https://www.infoq.com/news/2025/06/opentelemetry-go-performance/

2025-07-01 18:304096

评论

发布
暂无评论

Programming Abstractions in C阅读笔记:p246-p247

codists

亚马逊工程师如何将现有超大规模 NoSQL 数据库改造支持大规模分布式事务?

薛以致用

BRC20通证的深度科普:它的潜力与如何导入到bitget

股市老人

淘宝商品销量数据爬取丨淘宝API接口技术

tbapi

淘宝商品评论接口 天猫商品评论接口 天猫评论API接口 淘宝评论API接口

无缝打通易快报与电子签章系统,合同管理也能如此简单!

聚道云软件连接器

案例分享

精彩推荐 |【Java技术专题】「重塑技术功底」攻破Java技术盲点之剖析动态代理的实现原理和开发指南(上)

码界西柚

Java 后端 JDK 动态代理 CGLIB 动态代理 2024年第九篇文章

CnosDB的数据更新和删除

CnosDB

开源 时序数据库 tsdb CnosDB

掌握用户心理:通过ClkLog打造精准用户画像(下)

ClkLog

平台工程与安全

俞凡

DevOps DevSecOps 平台工程

高精度恒流/恒压(CC/CV)原边反馈功率转换器

芯动大师

Java多线程编程实战指南(设计模式篇)PDF

程序员李木子

Java多线程编程实战指南(核心篇)PDF

程序员李木子

【深入浅出Docker原理及实战】「原理实战体系」零基础+全方位带你学习探索Docker容器开发实战指南(Dockerfile使用手册)

码界西柚

Docker Linux 容器 Dockerfile 2024年第十篇文章

文心一言 VS 讯飞星火 VS chatgpt (178)-- 算法导论13.4 1题

福大大架构师每日一题

福大大架构师每日一题

缓存架构带来的甜与苦

薛以致用

全网最详细MVCC讲解,一篇看懂

Java随想录

Java MySQL 数据库 MVCC

深入了解 Python MongoDB 查询:find 和 find_one 方法完全解析

小万哥

Python 数据库 程序人生 软件工程 后端开发

淘宝店铺所有商品数据接口丨淘宝API接口

tbapi

淘宝API接口 淘宝店铺所有商品数据接口 天猫店铺所有商品数据接口

掌握用户心理:通过ClkLog打造精准用户画像(上)

ClkLog

埋点分析系统怎么恢复丢失的数据并更新?ClkLog来支招

ClkLog

开源 数据分析 埋点 用户画像 埋点分析

报告揭示OpenTelemetry对Go的性能影响_软件工程_InfoQ精选文章