me/JFR/2_Event结构及配置.md

43 lines
1.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

### Event 结构
- Event 大小
- Event ID
- 时间戳
- 持续时间
- 相关线程 ID
- 相关堆栈 ID
每个 Event 还会有自己的 Payload承载自己要采集的数据。但不是每个 Event 都填充上面的字段,只是结构里面有,并不会采集。
### Event采集的公共配置
- enabled是否启用这个 Event 的采集true/false
- cutoff是否截断例如1d、1h、1m、1s、1ms、1ns0=不截断
- stackTrace是否启用堆栈跟踪true/false
- period采集周期
+ beginChunk在每一个 Data Chunk 写满另起一个的时候,立刻采集一次
+ everyChunk在每一个 Data Chunk 写到占用一半空间限制的时候,立刻采集一次
+ endChunk在每一个 Data Chunk 写满的时候,立刻采集一次
+ 或者配置具体时间例如1d、1h、1m、1s、1ms、1ns
- thresholdEvent 持续时间超过这个阈值才会采集例如1d、1h、1m、1s、1ms、1ns
Event采集详细配置JDK自带两个模板在 $JAVA_HOME/lib/jfr 目录下里面配置格式是一个xml文件取其中一个配置举个例子例如
```xml
<event name="jdk.OldObjectSample">
<setting name="enabled" control="memory-leak-detection-enabled">true</setting>
<setting name="stackTrace" control="memory-leak-detection-stack-trace">false</setting>
<setting name="cutoff" control="memory-leak-detection-cutoff">0 ns</setting>
</event>
```
这个就是 OldObject 采集 Event 的配置,这里配置为:
- 启用这个Event采集
- 不采集堆栈
- 不截断
你也可以加上 period 和 threshold 配置,但对这个 Event 没啥效果。**这里有个 control 属性,接下来会提到。**
### 自定义配置