@@ -44,6 +44,7 @@ inputs:
4444- **only_in_container**: 是否仅匹配容器内的进程
4545- **rewrite_name**: 重写进程名的规则,支持正则表达式捕获组引用
4646- **enabled_features**: 为匹配的进程启用的功能列表:
47+ - `java.profile.cpu` : 开启 Java CPU 剖析,需要配置 `inputs.java.profile.cpu.enabled: true`,不依赖 `ebpf.profile.on_cpu`
4748 - `ebpf.profile.on_cpu` : 开启 On-CPU 剖析,需要配置 `inputs.ebpf.profile.on_cpu.disabled: false`
4849 - `ebpf.profile.off_cpu` : 开启 Off-CPU 剖析,需要配置 `inputs.ebpf.profile.off_cpu.disabled: false`
4950 - `ebpf.profile.memory` : 开启内存剖析,需要配置 `inputs.ebpf.profile.memory.disabled: false`
@@ -62,7 +63,7 @@ inputs:
6263
6364` ` ` yaml
6465inputs:
65- ebpf :
66+ proc :
6667 symbol_table:
6768 golang_specific:
6869 enabled: false
@@ -76,6 +77,47 @@ inputs:
7677- **refresh_defer_duration**: Java 符号表的刷新延迟,避免高频刷新。
7778- **max_symbol_file_size**: Java 符号表占用的最大空间大小,单位为 GB,避免占用过大的 `/tmp` 空间。
7879
80+ # Java CPU Profiling
81+
82+ Java CPU Profiling 通过 Java Agent 的 AsyncGetCallTrace(AGCT)持续采集 JVM 方法调用栈,并补全 Java JIT 方法符号。该功能独立于 eBPF On-CPU Profiling,必须同时满足以下两个条件才会采集目标进程:
83+
84+ - 配置 `inputs.java.profile.cpu.enabled : true`,开启 Java CPU Profiler 基础能力;
85+ - ` inputs.proc.process_matcher` 命中目标进程,并且 `enabled_features` 中包含 `java.profile.cpu`。
86+
87+ 推荐先按 JAR 包或完整命令行精确匹配少量业务进程,验证资源开销后再扩大范围。以下配置需要合并到现有采集器组配置中,请勿直接覆盖已有的 Process Matcher 和其他配置:
88+
89+ ` ` ` yaml
90+ inputs:
91+ proc:
92+ process_matcher:
93+ - match_regex: '.*my-order-service\. jar.*'
94+ match_type: cmdline_with_args
95+ only_in_container: false
96+ enabled_features:
97+ - java.profile.cpu
98+ - proc.gprocess_info
99+ java:
100+ profile:
101+ cpu:
102+ enabled: true
103+ frequency: 99
104+ max_depth: 98
105+ sample_ring_size: 512
106+ method_cache_size: 256
107+ ` ` `
108+
109+ 如果同一进程还需要普通 eBPF On-CPU Profiling,可在 `enabled_features` 中同时保留 `ebpf.profile.on_cpu`,并确保 `inputs.ebpf.profile.on_cpu.disabled : false`。两个功能使用独立的采样链路和进程名单,任何一个都不是另一个的前置条件。
110+
111+ 配置参数说明:
112+
113+ - **enabled**:默认为 false。设置为 true 后,Agent 在启动时准备 Java CPU Profiler 基础能力;修改后需重启 Agent 生效。
114+ - **frequency**:采样频率,单位为 Hz,默认为 99,范围为 1~1000。资源敏感场景可从 49 开始;199 仅建议用于短时诊断,并应先进行压测。
115+ - **max_depth**:单条 Java 调用栈最多保留的栈帧数,默认为 98,范围为 1~128。增大该值可保留更深的调用路径,但会增加样本大小和处理开销。
116+ - **sample_ring_size**:每个 JVM 中的样本环形队列容量,默认为 512,范围为 64~8192。增大该值可以缓解突发采样或发送端短时背压造成的样本丢弃,但会增加 JVM 内存占用。
117+ - **method_cache_size**:每个 JVM 中的方法缓存容量,默认为 256,范围为 64~8192。方法数量较多、符号反复解析时可适当调大,但会增加 JVM 内存占用。
118+
119+ ` enabled` 和上述采样参数修改后需重启 Agent;Process Matcher 支持热更新,增删 `java.profile.cpu` 不需要重启目标 JVM。关闭采样不会卸载已经加载到 JVM 中的 Agent SO;如需彻底释放其占用的资源,需要在维护窗口重启目标 JVM。
120+
79121# eBPF On-CPU Profiling
80122
81123eBPF On-CPU Profiling 是默认开启的,但需要修改 `inputs.proc.process_matcher` 来指定进程列表。Agent 支持的配置参数如下:
0 commit comments