apm 字节码技术

服务端 APM

假设有这样一个函数,我们需要进行监控

复制代码
public void saveUser() {
    doDbOperation();
    flushCache();
}

我们需要对它的字节码进行改写,自动注入一些代码达到监控的功能,一个最简单的模型如下面的代码所示

复制代码
public void _saveUser() {
    // 获取开始时间
    long start = System.currentTimeMillis();
    // 记录未捕获异常
    Throwable uncaughtException = null;

    try {
        doDbOperation();
        flushCache();
    } catch (Throwable e) {
        uncaughtException = e;
        throw e;
    } finally {
        // 记录结束时间
        long end = System.currentTimeMillis();
        // 上报 spanName、开始时间、结束时间、是否有未捕获的异常
        APMUtil.report("UserService.saveUser", start, end, uncaughtException);
    }
}
相关推荐
万粉变现经纪人几秒前
如何解决pip安装报错ModuleNotFoundError: No module named ‘python-dateutil’问题
开发语言·ide·python·pycharm·pandas·pip·httpx
IT乐手6 分钟前
Java 实现异步转同步的方法
java
杨杨杨大侠6 分钟前
附录 1:🚀 Maven Central 发布完整指南:从零到成功部署
java·github·maven
Sammyyyyy11 分钟前
macOS是开发的终极进化版吗?
开发语言·macos·开发工具
青草地溪水旁22 分钟前
23 种设计模式
开发语言·c++·设计模式
草履虫建模25 分钟前
在 RuoYi 中接入 3D「园区驾驶舱」:Vue2 + Three.js + Nginx
运维·开发语言·javascript·spring boot·nginx·spring cloud·微服务
编码浪子25 分钟前
趣味学RUST基础篇(函数式编程闭包)
开发语言·算法·rust
渣哥28 分钟前
Java HashMap 扩容机制详解:触发条件与实现原理
java
赵星星52028 分钟前
Spring Bean线程安全陷阱:90%程序员都会踩的坑,你中招了吗?
java
MC皮蛋侠客35 分钟前
使用python test测试http接口
开发语言·python·http