Crash监控方案(一):Java层监控方案

本文探讨了Java应用性能监控的方法,包括传统的代码嵌入日志、AOP以及修改源代码的方式,并指出其局限性。重点介绍了Javaagent和javassist,这是一种在class加载前进行字节码插桩以实现高效性能监控的技术。通过示例展示了如何实现方法执行耗时的监控,从而为性能瓶颈分析提供支持。
摘要由CSDN通过智能技术生成

一、性能监控:
要监控应用的性能,首先列出性能监控点(比如方法执行耗时,sql执行耗时等等监控),然后输出要关注的信息,最终根据信息进行数据分析得出性能瓶颈后进行持续优化改进,不同应用、不同场景下,监控点不尽相同,要关注的信息如何获取却是每个工程师都要思考的问题。

在接触javassist与javaagent之前,有过几个方案,但发布了几版后发现实现方式太low、成本高、效率低等不足,其中包括:代码中嵌入日志、使用spring管理应用并使用aop、修改jar包源代码增加日志。

二、字节码插桩技术实现更高效的应用性能监控,什么是字节码插桩技术:
javaagent 是java1.5之后引⼊的特性,其主要作⽤是在class 被加载之前对其拦截,插⼊字节码。

javassist:编辑和创建字节码的类库,其主要的优点,在于简单,⽽且快速。直接使⽤java编码的形式。

基于javaagent和javassist实现字节码插桩技术。

三、demo实现方法执行耗时监控

 public class TimeAgent {
   
      public static void premain(String args, Instrumentation instrumentation) {
   
        System.out.println("传入参数:"+args);
        instrumentation.addTransformer(new ClassFileTransformer() {
   
            public byte[] transform(ClassLoader loader, String className, Class<?><
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值