Closed lrwh closed 9 months ago
Ddtrace 修改了 async-profiler 源码,并在 async-profiler 基础上新加了一些 native 方法,使得链路和profiler能够串联起来。即将相关tag注入到 profiler 内部。
public boolean recordTraceRoot(long rootSpanId, String endpoint, int sizeLimit) {
return recordTrace0(rootSpanId, endpoint, sizeLimit);
}
private static native boolean recordTrace0(long rootSpanId, String endpoint, int sizeLimit);
Pyroscope 也是基于 async-profiler 源码二开,但并未做这方面的调整,无法直接将相关tag注入进 profiler 内部。 另一个思路是,我们可以在上传profiling信息时加入当前的span信息,dk这边接收到对于的信息进行解析存储,也可以实现profling数据与ddtrace链路关联,具体能否实现,还看dk这边是否能够存储这些tag
由于 ddtrace 是用jdk11编译的,最低支持jdk8,所以只能兼容jdk8及以上的版本
由于没有得到很好的支持,所以先close,后期有需求再打开
背景
async-profiler
的优点在于,支持低版本的 jdk(>=1.6),而 ddtrace 的相关 profiler 都需要1.8.3××
以上版本。使得很多需求客户无法接入。Pyroscope是 grafana 开源的、基于
async-profiler
二次开发的 Profling 框架。pyroscope-java 是 Pyroscope 开源的 java 版本的 Profling 框架。
需求
希望 ddtrace 能够支持 Pyroscope 以便支持更低版本的 jdk。