前段时间对公司产品做性能优化,如果单依赖于测试,进度就会很慢。所以就通过对代码的方式来完成,并以此来加快项目进度。具体的执行方案自然就是要知道各个业务执行时间,针对业务来进行优化。

因为项目中使用了Spring,那自然的就想到要通过 Spring interceptor来完成这个事,然后就查了一下spring-aop.jar里,已有了多个trace,monitor相关的interceptor了。然后逐个看了一下,有一个PerformanceMonitorInterceptor,能够满足需求。就直接将其引入到项目中,以供性能优化之用。

下面就贴出来我的相关配置:

1、添加一个applicationContext-performace.xml文件,加入Interceptor,并配置好相关的 拦截ponitcut:

<bean id="xxxPerformance" class="org.springframework.aop.interceptor.PerformanceMonitorInterceptor"> </bean>

<aop:config>
        <aop:advisor pointcut="execution(* org.springframework.jdbc.core.JdbcTemplate.*(..))" advice-ref="xxxPerformance" />

        <!-- 你项目中业务实现包 -->
        <aop:advisor pointcut="execution(* com.your.project.service.impl.*.*(..))" advice-ref="xxxPerformance" />
</aop:config>

2、  然后配置 log4j.xml,让其打到日志文件中和CLI:

<appender name="console" class="org.apache.log4j.ConsoleAppender">
      <layout class="org.apache.log4j.EnhancedPatternLayout">
              <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} [%-5p](%-35c{1.}:%L) %m%n">
      </layout>
</appender>

<appender name="sql-appender" class="org.apache.log4j.RollingFileAppender">
      <param name="file" value="${WAS_INSTALL_HOME}/your/logs/directory/xxx-sql.log" />
      <param name="Append" value="true" />
      <param name="MaxFileSize" value="100MB" />
      <param name="MaxBackupIndex" value="10" />

      <layout class="org.apache.log4j.EnhancedPatternLayout">
              <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} [%-5p](%-35c{1.}:%L) %m%n">
      </layout>
</appender>

<!--SQL : log your sql used JdbcTemplate-->
<logger name="org.springframework.jdbc.core.JdbcTemplate" additivity="false">
        <level value="DEBUG" />
        <appender-ref="console"/>
        <appender-ref="sql-appender"/>
</logger>

<!--mybatis mapper: log your sql used mybatis-->
<logger name="your.mapper.directory" additivity="false">
        <level value="DEBUG" />
        <appender-ref="console"/>
        <appender-ref="sql-appender"/>
</logger>

<!--Performance -->
<logger name="org.springframework.aop.interceptor.PerformanceMonitorInterceptor" additivity="false">
        <level value="TRACE" />
        <appender-ref="console"/>
        <appender-ref="sql-appender"/>
</logger>

注意:

上面红色背景的内容是需要替换成你的项目中的相关包名或者目录。

Spring:利用PerformanceMonitorInterceptor来协助应用性能优化的更多相关文章

  1. [python]用profile协助程序性能优化

    转自:http://blog.csdn.net/gzlaiyonghao/article/details/1483728 本文最初发表于恋花蝶的博客http://blog.csdn.net/lanph ...

  2. 用profile协助程序性能优化

     程序运行慢的原因有很多,比如存在太多的劣化代码(如在程序中存在大量的“.”操作符),但真正的原因往往是比较是一两段设计并不那么良好的不起眼的程序,比如对一序列元素进行自定义的类型转换等.因为程序性能 ...

  3. Spring Cloud Feign 使用方法与性能优化

    1. feign自定义Configuration和root 容器有效隔离. 用@Configuration注解 不能在主@ComponentScan (or @SpringBootApplicatio ...

  4. Atitit 如何利用先有索引项进行查询性能优化

    Atitit 如何利用先有索引项进行查询性能优化 1.1. 再分析的话就是我们所写的查询条件,其实大部分情况也无非以下几种:1 1.2. 范围查找 动态索引查找1 1.2.1. 索引联合 所谓的索引联 ...

  5. Spring Boot 性能优化

    spring 框架给企业软件开发者提供了常见问题的通用解决方案,包括那些在未来开发中没有意识到的问题.但是,它构建的 J2EE 项目变得越来越臃肿,逐渐被 Spring Boot 所替代.Spring ...

  6. Spring/Hibernate 应用性能优化的7种方法

    对于大多数典型的 Spring/Hibernate 企业应用而言,其性能表现几乎完全依赖于持久层的性能.此篇文章中将介绍如何确认应用是否受数据库约束,同时介绍七种常用的提高应用性能的速成法.本文系 O ...

  7. 利用 gperftools 对nginx mysql 内存管理 性能优化

    利用 gperftools 对nginx 与 mysql  进行 内存管理  性能优化 降低负载. Gperftools 是由谷歌开发.官方对gperftools 的介绍为: These tools ...

  8. 15套java架构师、集群、高可用、高可扩展、高性能、高并发、性能优化、Spring boot、Redis、ActiveMQ、Nginx、Mycat、Netty、Jvm大型分布式项目实战视频教程

    * { font-family: "Microsoft YaHei" !important } h1 { color: #FF0 } 15套java架构师.集群.高可用.高可扩展. ...

  9. java架构师负载均衡、高并发、nginx优化、tomcat集群、异步性能优化、Dubbo分布式、Redis持久化、ActiveMQ中间件、Netty互联网、spring大型分布式项目实战视频教程百度网盘

    15套Java架构师详情 * { font-family: "Microsoft YaHei" !important } h1 { background-color: #006; ...

随机推荐

  1. java程序测试之字符流

    package filestream; import java.io.FileReader; import java.io.FileWriter; import java.io.FileNotFoun ...

  2. make: Nothing to be done for `all'

    最近安装fastdfs,执行make.sh时,出现  Nothing to be done for `all' 在网上搜了一下,大部分是说 用 make clean 清除以前编译产生的目标文件. 我试 ...

  3. ABP学习笔记

      1. 用 Nhibernate:CountAsync 是定义在System.Data.Entity里的 var totalCount = await query.CountAsync(); 出现以 ...

  4. mysql 常用命令集锦

    Mysql安装目录数据库目录/var/lib/mysql/配置文件/usr/share/mysql(mysql.server命令及配置文件)相关命令/usr/bin(mysqladmin mysqld ...

  5. dedecms织梦自定义表单提交之后如何发送到邮箱!

    但是往往一些客户需要做一些提交信息到后台并发送到指定的邮箱. 一.直接打开plus下面的diy.php文件:  85行:$query = "INSERT INTO `{$diy->ta ...

  6. windows 安装 Scrapy的套路

    我最近在琢磨scrapy爬虫框架,在windows中安装scrapy遇到了不少坑:直接 pip install scrapy 安装不成功的,百度说要安装vc2008+等等,安装这些时间太长,最后找到一 ...

  7. 2017-3-2 C# WindowsForm 中label标签居中显示

    有时候label标签要输出 label.text=""; 的语句,那么要把这个语句居中显示 1.要取消他的Autosize的值 2.拉大这个框,设置里面的文本的TextAlign ...

  8. 快速排序算法javascript实现

    function quicksort(arr){ function q(start,end){ if(start>=end){return;} var pivot = start, temp = ...

  9. mvc路由

    一.路由常规设置 1.URL模式     路由系统用一组路由来实现它的功能.这些路由共同组成了应用程序的URL架构或方案. URL的两个关键行为:     a.URL模式是保守的,因而只匹配与模式具有 ...

  10. RabbitMQ(从安装到使用)

    RabbitMQ 一,RabbitMQ简单介绍: RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统.他遵循Mozilla Public License开源协议. MQ全称为Messa ...