博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
利用springMVC的interceptor实现页面性能监控(Filter亦可)
阅读量:4213 次
发布时间:2019-05-26

本文共 1407 字,大约阅读时间需要 4 分钟。

   调优第一步,找出耗时比较长的页面进行优化。利用interceptor能轻易搞定。interceptor提供了preHandle和postHandle以及afterCompletion三个方法。preHandle调用controller具体方法之前调用,postHandle完成具体方法之后调用,afterCompletion完成对页面的render以后调用,至此整个页面渲染完成。也就是说我们在preHandle记录开始的时间,在afterCompletion记录结束的时间,就可或者整个页面生成的时间。Spring自带StopWatch工具类来实现时间跟踪,关键一点interceptor不是线程安全的。我们需要借助threadlocal来实现线程安全。

@Override    public boolean preHandle(HttpServletRequest request,            HttpServletResponse response, Object handler) throws Exception {        if(usePerformance){        	StopWatch stopWatch = new StopWatch(handler.toString());            stopWatchLocal.set(stopWatch);            stopWatch.start(handler.toString());        }                return true;    } @Override    public void afterCompletion(HttpServletRequest request,            HttpServletResponse response, Object handler, Exception ex)            throws Exception {    	if(usePerformance){    		StopWatch stopWatch = stopWatchLocal.get();            stopWatch.stop();            String currentPath = request.getRequestURI();            String queryString  = request.getQueryString();            queryString = queryString == null ? "":"?" + queryString;            log.info("access url path:" + currentPath + queryString +  " |time:" + stopWatch.getTotalTimeMillis());            stopWatchLocal.set(null);    	}            }

 

呵呵,如果你没有使用springMVC可以使用filter来完成

stopWatch.start();doFilterChain();stopWatch.stop();

 

转载地址:http://imdmi.baihongyu.com/

你可能感兴趣的文章
Android编译系统简要介绍和学习计划
查看>>
Android编译系统环境初始化过程分析
查看>>
user2eng 笔记
查看>>
DRM in Android
查看>>
ARC MRC 变换
查看>>
Swift cell的自适应高度
查看>>
【linux】.fuse_hiddenXXXX 文件是如何生成的?
查看>>
【LKM】整合多个LKM为1个
查看>>
【Windows C++】调用powershell上传指定目录下所有文件
查看>>
Java图形界面中单选按钮JRadioButton和按钮Button事件处理
查看>>
小练习 - 排序:冒泡、选择、快排
查看>>
SparkStreaming 如何保证消费Kafka的数据不丢失不重复
查看>>
Spark Shuffle及其调优
查看>>
数据仓库分层
查看>>
常见数据结构-TrieTree/线段树/TreeSet
查看>>
Hive数据倾斜
查看>>
TopK问题
查看>>
Hive调优
查看>>
HQL排查数据倾斜
查看>>
DAG以及任务调度
查看>>