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);
    }
}
相关推荐
ShineWinsu1 分钟前
对于JavaScript:初识JavaScript以及输入输出
java·开发语言·前端·javascript·css·面试·html
小小安于乱4 分钟前
linux中java的springboot程序获取IP地址间歇性10秒卡顿问题
java·开发语言
峥嵘life24 分钟前
Android16 开机后立即打开相机闪退问题分析与解决总结
android·开发语言·数码相机·策略模式
云絮.28 分钟前
mybatis(二)
java·数据库·mybatis
西凉的悲伤29 分钟前
Guava-Retrying 重试框架详解
java·guava·重试框架·guava-retrying
niucloud-admin30 分钟前
NIUCLOUD LITE AI开发文档--命名规范
开发语言·php
WL学习笔记31 分钟前
模板初阶(C++)
开发语言·c++·后端·模板初阶
SunnyDays101133 分钟前
使用 Java 高效管理 Excel 批注:添加、读取、修改和删除
java·开发语言·excel
ydjs678899-bot1 小时前
为什么大型monorepos变慢了Rush.js + Sparo对此做了什么
开发语言·javascript·ecmascript
const_qiu1 小时前
第 2.5 章 2.5.8:质量关 —— 安全审查、UI/UX 审查与踩坑复盘
java·人工智能·安全·ui·ux