从零搭建项目开发框架-24系统性能监控

系统在初期运行时可能没问题,每个功能都快速响应,但是随着数据量的增多,可能个别功能不能快速响应,但是用户还不好描述具体哪地方慢,这时候就需要通过AOP来进行性能监控,及时发现系统存在的问题。

@Aspect
public class PerformanceAspect {
    private static Logger logger = LoggerFactory.getLogger("performanceLog");

    @Around("execution (* com.critc.*.*.service.*.*(..))")
    public Object performanceIterceptor(ProceedingJoinPoint joinPoint) throws Throwable {
        Object result = null;
        long l = System.currentTimeMillis();
        result = joinPoint.proceed();
        long consume = System.currentTimeMillis() - l;
        if (consume > 3000) {
            //记录系统操作较慢的service处理过程
            logger.info("实体类:" + joinPoint.getTarget());
            logger.info("方法名:" + joinPoint.getSignature().getName());
            // 得到被拦截方法参数,并打印
            Object[] args = joinPoint.getArgs();
            for (int i = 0; i < args.length; i++) {
                logger.info("方法参数:" + i + " -- " + args[i]);
            }
            logger.info("用时:" + consume);
        }
        return result;
    }
}

applicationContext.xml增加配置

  
    

这个aop的原理是@Around环绕型切面,开始时记录当前时间,结束时把结束时间-开始时间,如果超过3000毫秒,则记录对应的日志。

这样就可以监控所有service层的操作时间,如果操作时间超过3秒,记录下当前类名、方法名及所有参数,便于追溯问题,可以进行后续的性能调优,比如加索引、优化数据存储等等。

源码下载

本阶段详细源码

你可能感兴趣的:(从零搭建项目开发框架-24系统性能监控)