JVMTI Agent在中间件领域的应用

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
1. JVMTI Agent在中间件 领域的应用 童子龙/ 腾讯云专家工程师
2.
3. About Me • • • • • 童子龙(leoziltong) 腾讯云专家工程师 腾讯云Femas开源社区负责人 腾讯云微服务平台TSF核心研发 GitHubId:@zilongTong Tencent opensource Member
4. 大纲 • • • • • 从字节码到 JVMTI Agent 原理介绍 Agent 在性能监控领域的应用 Agent 在 Service Mesh ProxyLess 领域的应用 Agent 在腾讯云的现状和最佳实践
5. 字节码结构简介 • • • • • • • • • magicNumber version Constant_pool Access_flag Interfaces Fields Methods Attributes ... ...
6. Functions of JvmTI • 加载class文件之前,修改字节码 • 运行时修改已经加载的类字节码 • 添加jar到BootstrapClassloader中加载 • 添加jar到SystemClassLoader中加载 • 获取已经被加载过的类 • ... ...
7. 常见应用场景 • 加密class文件 • debug Java程序 • 应用性能分析、profile诊断 • APM全链路性能监控 • 业务应用无感知、无侵入代理 • 热加载Class类 • ... ...
8. JvmTI premain
9. JvmTI agentmain
10. Agent的优势 • 轻成本接入,方便大规模业务集群升级 • 解耦业务应用,能力透明化下沉,关注点分离 • 性能优于proxy sidecar • 能力可插拔,无厂商依赖 • ......
11. 腾讯云agent的一些现状 • 基础能力下沉,业务聚焦应用开发 • 框架易用性封装,降低学习和维护成本 • 精细的流量治理、数据面轻量化 • 多维度应用性能分析,能力标准化、平台化 • 信息丰富的全链路tracing、Metrics
12. 性能分析 • 进程的内存信息 • 进程的线程信息 • Jmx Metrics • method profile • JVM 进程火焰图 • GC 日志分析 • ......
13. 如何打造基于agent的性能分析平台 • 业务层接入agent开启通信端口 • 平台层下发指令
14. 如何打造基于agent的性能分析平台 • 自研基于sdk的cpu profile • method profile transformer
15. APM概览
16. Apm探针 • 全链路调用栈 • 探针采样率 • 自定义Tag:显示系统和业务自定的标签 • Rpc调用信息:client-server通信时延 • 中间件链路信息:MQ、gateway、database • 调用链与业务日志联动
17. 基于Java agent的proxyLess Mesh
18. 腾讯云Service Mesh现状 • 治理数据面:proxy、proxyLess模式多元 化数据面。 • 平台控制面:统一的控制面标准协议,一 套治理协议,多数据面下发
19. 腾讯云微服务标准化
20. 治理SPEC-circuit breaker
21. 治理SPEC-RateLimit
22. 治理SPEC-Route
23. 治理SPEC- Auth
24. 治理SPEC-全链路灰度
25. service agent治理数据面 • 一个agent包同时支持多微服务协议 • springcloud E\F\G\2020 • dubbo 2.x\3.x • 微服务生命周期插装 • 治理能力标准化、插件化
26. service agent治理架构最佳实践      agent starter • premain入口 • 解析要加载的plugin配置 • Instrumentation定向添加transformer agent tools • 日志处理 • 反射工具类,提升性能 agent core • plugin yaml解析器 • 不同微服务框架clossloader隔离 • spi classloader • 实例方法、静态方法、构造方法插装template agent plugin • 微服务代理插件 agent jts • 性能分析平台,多功能agent集成到one agent • -javaagent:/path/agent.jar=targetJar= 协议名/应用jar path • ├── femas-agent │ ├── femas-agent-core │ ├── femas-agent-example │ ├── femas-agent-plugin │ ├── femas-agent-starter │ └── femas-agent-tools │ └── femas-agent-jts • • • • • •
27. agent解决跨线程传递  修改原生线程类 • Runnable • Callable • TimerTask  修改原生JDK线程池 • java.util.concurrent.ThreadPoolExecutor • java.util.concurrent.ScheduledThreadPoolExecutor • java.util.concurrent.ForkJoinTask • java.util.Timer
28. 运行时字节码可观测 • 自研字节码实时监控工具 • java -jar extractor.jar pid classFile • dump运行时字节码,Paas平台观测运行实况
29. 浅谈内核探针 - eBPF
30.
31.
32. About eBPF   优势: • 去sidecar,性能提升 • 节省资源 • 有效减少memory copy 劣势 • 内核级的事件驱动,对代码安全性有诸多限制 • L7层处理困难
33. 加入Femas社区
34.
35.

Accueil - Wiki
Copyright © 2011-2024 iteam. Current version is 2.139.0. UTC+08:00, 2024-12-29 02:10
浙ICP备14020137号-1 $Carte des visiteurs$