启用otel.instrumentation.common.default-enabled=true后CPU过高,需明确默认OTEL特性
定位OTEL Agent默认配置CPU过高问题的方案
一、默认启用特性的确认方式
OTEL Java Agent 2.1.0版本的默认启用 instrumentation 没有单独的汇总文档,但有两个权威途径可以确认:
- 查看Agent内置配置文件:直接解压Agent的jar包,找到
META-INF/opentelemetry/instrumentation-metadata.yaml,里面每个instrumentation条目都有default-enabled字段,值为true的就是默认开启的。比如JDBC、Servlet、Spring Web、OkHttp这些主流框架的 instrumentation 都是默认启用的。 - 单instrumentation文档:每个具体instrumentation的官方说明页面里,会明确标注是否默认启用,你可以逐个查看怀疑的组件文档。
二、CPU过高的定位步骤
- 逐个排查instrumentation
先保持otel.instrumentation.common.default-enabled=false,然后逐个开启默认启用的instrumentation(通过otel.instrumentation.<NAME>.enabled=true指定),每次开启后观察CPU变化,很快就能找到导致问题的组件。 - 用性能工具分析调用栈
借助Java Flight Recorder或者AsyncProfiler生成CPU采样快照,重点关注io.opentelemetry.instrumentation包下的方法调用占比,哪个方法CPU占用最高,对应的就是有性能问题的instrumentation。 - 检查版本兼容性
你使用的是基于Java8编译的2.1.0版本Agent,运行在Java17环境下,虽然官方宣称兼容,但部分老版本instrumentation在Java17的模块化或新特性下可能存在性能损耗。不妨尝试升级到适配Java17的Agent版本,或者直接使用最新稳定版,很多已知的性能问题在新版本中已被修复。
三、快速排查小技巧
如果觉得逐个开启instrumentation效率低,可以采用二分法:先开启一半默认启用的组件,观察CPU情况,再根据结果缩小范围,能大幅缩短排查时间。
内容的提问来源于stack exchange,提问作者Chip
相关产品推荐
相关产品推荐

