跨度压缩
编辑跨度压缩编辑
在某些情况下,APM 代理可能会在事务中收集大量非常相似或相同的跨度。例如,如果在循环内捕获跨度,或者在未优化的 SQL 查询中使用多个查询而不是连接来获取相关数据,就会发生这种情况。在这种情况下,每个事务的跨度上限(默认情况下为 500 个跨度)可能会很快达到,导致代理停止捕获给定事务的潜在更相关跨度。
这种重复的相似跨度通常本身并不十分相关,尤其是如果它们持续时间很短。它们还会使 UI 混乱,并导致处理和存储开销。
为了解决这个问题,APM 代理可以将这些跨度压缩成单个跨度。压缩后的跨度保留了大多数原始跨度信息,例如总持续时间和它所代表的跨度数量。
无论压缩策略如何,如果跨度满足以下条件,则可以进行压缩
- 它没有传播其跟踪上下文。
- 是出口跨度(例如数据库查询跨度)。
- 其结果不是
"failure"
。
压缩策略编辑
APM 代理可以选择两种策略来决定两个相邻跨度是否可以压缩。两种策略都有一个好处,即只需要将一个之前的跨度保存在内存中。这对于确保代理不需要大量内存来启用跨度压缩非常重要。
相同类型策略编辑
如果两个相邻跨度具有相同的
- 跨度类型
- 跨度子类型
-
destination.service.resource
(例如数据库名称)
完全匹配策略编辑
如果两个相邻跨度具有相同的
- 跨度名称
- 跨度类型
- 跨度子类型
-
destination.service.resource
(例如数据库名称)
设置编辑
代理具有配置设置,用于根据两种策略的跨度持续时间定义上限。对于“相同类型”策略,默认限制为 0 毫秒,这意味着“相同类型”策略默认情况下处于禁用状态。对于“完全匹配”策略,默认限制为 50 毫秒。持续时间更长的跨度不会被压缩。有关详细信息,请参阅代理文档。
代理支持编辑
以下代理支持跨度压缩
代理 | 相同类型配置 | 完全匹配配置 |
---|---|---|
Go 代理 |
||
Java 代理 |
||
.NET 代理 |
||
Node.js 代理 |
||
Python 代理 |