SlideShare ist ein Scribd-Unternehmen logo
1 von 16
Performance Monitoring With AOP

                            @ivannotes
http://www.ivannotes.com
Agenda
   为什么需要对性能进行监控
   哪些点需要进行性能监控
   简单即是美— 如何来做性能监控
   Future
   参考资料
   Q&A
为什么需要对性能进行监控

   问道
    哪个接口调用最耗时
    哪个页面访问速度最慢
    哪个接口调用次数最多
    出问题的时候是哪个接口错误率最高
   一切为了稳定,一切为了快速
哪些点需要进行性能监控

   外部依赖
    谨慎的处理外部依赖
   页面访问
    了解网站的运行状况
   SPI
    一旦发布就要终身负责
简单即是美—如何来做性能监控

   性能统计 Perf4J

   无缝监控
       Delegator + Spring AOP
       Rose Intercepter
       AspectJ
Perf4J
   System.out.println(endTime – startTime);
   编程模型
    StopWatch sw = new **StopWatch();
    sw.start();
    // your code
    sw.stop(tag);
Perf4J
   结合 Commons Log
    Log logger = LogFactory.getLog(“performance”);
    StopWatch watch = new CommonsLogStopWatch(logger);
   Log4j 配置
    <appender name="delegatorPerfAppender"
             class="org.perf4j.log4j.AsyncCoalescingStatisticsAppender">
          <param name="TimeSlice" value="60000" />
          <appender-ref ref="delegatorAppender" />
       </appender>

    <appender name="delegatorAppender" class="org.apache.log4j.DailyRollingFileAppender">
    <param name="File" value="/performance.log" />
    <param name="DatePattern" value="'.'yyyyMMdd" />
    <layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern" value="[%-5p %d{yyyy-MM-dd HH:mm:ss.SSS}] %l [%m]
        %n" />
    </layout>
    </appender>
Per4J
   CoalescingStatistics
无缝监控
   Delegator + Spring AOP
    外部依赖约定使用 Delegator 封装,利用 Spring AOP
    进行切片监控接口调用性能
    实现文档: http://www.ivannotes.com/2012/spring-aop/
无缝监控
   Rose Interceptor
    利用 Rose 的 Interceptor 采用 round 机制对 Web 服务进行性能监控
    public class WebPerfomanceInterceptor extends ControllerInterceptorAdapter {

        private static final Log logger = LogFactory.getLog(“performance");

        @Override
        public int getPriority() {
          return 200;
        }

        @Override
        protected Object round(Invocation inv, InvocationChain chain) throws Exception {
          StringBuilder sb = new StringBuilder();
          sb.append(inv.getRequest().getMethod()).append("|");
          sb.append(inv.getResourceId());

            StopWatch watch = new CommonsLogStopWatch(logger);
            try {
                watch.start();
                return super.round(inv, chain);
            } finally {
                watch.stop(sb.toString());
            }
        }
    }
无缝监控
   AspectJ 对 SOA 服务进行监控
    × Compile Time weaving
    √ Load Time weaving
    √ @AspectJ Style
无缝监控

1) Java agent
2) aop.xml
3) @AspectJ
Future
   Abstract & Open
   Data Visualization
   Dynamic Switch
参考资料
   http://www.ivannotes.com/2012/spring-aop/
   http://perf4j.codehaus.org/devguide.html
   http://www.eclipse.org/aspectj/doc/released/adk15notebook/in
   <Spring reference>
   <AspectJ in Action>
Q&A
{ Thanks;
}

Weitere ähnliche Inhalte

Ähnlich wie Performance Monitoring With AOP

twMVC 47_Elastic APM 的兩三事
twMVC 47_Elastic APM 的兩三事twMVC 47_Elastic APM 的兩三事
twMVC 47_Elastic APM 的兩三事twMVC
 
Power flow簡介
Power flow簡介Power flow簡介
Power flow簡介Sky Wu
 
Mvc training
Mvc trainingMvc training
Mvc trainingxioxu
 
数据库性能诊断的七种武器
数据库性能诊断的七种武器数据库性能诊断的七种武器
数据库性能诊断的七种武器Leyi (Kamus) Zhang
 
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練4
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練42015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練4
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練4Duran Hsieh
 
性能测试实践1
性能测试实践1性能测试实践1
性能测试实践1yiditushe
 
钟志 第八期Web标准化交流会
钟志 第八期Web标准化交流会钟志 第八期Web标准化交流会
钟志 第八期Web标准化交流会Zhi Zhong
 
twMVC#19 | opserver監控服務的解決
twMVC#19 | opserver監控服務的解決twMVC#19 | opserver監控服務的解決
twMVC#19 | opserver監控服務的解決twMVC
 
Terracotta And Continuent Based Clustering Architecture
Terracotta And Continuent Based Clustering ArchitectureTerracotta And Continuent Based Clustering Architecture
Terracotta And Continuent Based Clustering ArchitectureTarget Source
 
一拍一产品背后的故事(React实战)
一拍一产品背后的故事(React实战)一拍一产品背后的故事(React实战)
一拍一产品背后的故事(React实战)Kejun Zhang
 
[Flash开发者交流][2010.05.30]avm2虚拟机浅析与as3性能优化(陈士凯)
[Flash开发者交流][2010.05.30]avm2虚拟机浅析与as3性能优化(陈士凯)[Flash开发者交流][2010.05.30]avm2虚拟机浅析与as3性能优化(陈士凯)
[Flash开发者交流][2010.05.30]avm2虚拟机浅析与as3性能优化(陈士凯)Shanda innovation institute
 
高性能远程调用解决方案
高性能远程调用解决方案高性能远程调用解决方案
高性能远程调用解决方案Ady Liu
 
twMVC#46_SQL Server 資料分析大躍進 Machine Learning Services
twMVC#46_SQL Server 資料分析大躍進 Machine Learning ServicestwMVC#46_SQL Server 資料分析大躍進 Machine Learning Services
twMVC#46_SQL Server 資料分析大躍進 Machine Learning ServicestwMVC
 
廖雪峰 Saa s ovp
廖雪峰 Saa s ovp廖雪峰 Saa s ovp
廖雪峰 Saa s ovpdrewz lin
 
110329 luopeng-sysopt-openkavass
110329 luopeng-sysopt-openkavass110329 luopeng-sysopt-openkavass
110329 luopeng-sysopt-openkavassZoom Quiet
 
使用NodeJS构建静态资源管理系统
使用NodeJS构建静态资源管理系统使用NodeJS构建静态资源管理系统
使用NodeJS构建静态资源管理系统Frank Xu
 
Asp.net mvc 培训
Asp.net mvc 培训Asp.net mvc 培训
Asp.net mvc 培训lotusprince
 
Beyond rails server
Beyond rails serverBeyond rails server
Beyond rails serverMichael Chen
 
腾讯大讲堂58 拍拍app platform中间件解决方案简介
腾讯大讲堂58 拍拍app platform中间件解决方案简介腾讯大讲堂58 拍拍app platform中间件解决方案简介
腾讯大讲堂58 拍拍app platform中间件解决方案简介George Ang
 

Ähnlich wie Performance Monitoring With AOP (20)

twMVC 47_Elastic APM 的兩三事
twMVC 47_Elastic APM 的兩三事twMVC 47_Elastic APM 的兩三事
twMVC 47_Elastic APM 的兩三事
 
Power flow簡介
Power flow簡介Power flow簡介
Power flow簡介
 
Mvc training
Mvc trainingMvc training
Mvc training
 
数据库性能诊断的七种武器
数据库性能诊断的七种武器数据库性能诊断的七种武器
数据库性能诊断的七种武器
 
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練4
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練42015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練4
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練4
 
性能测试实践1
性能测试实践1性能测试实践1
性能测试实践1
 
钟志 第八期Web标准化交流会
钟志 第八期Web标准化交流会钟志 第八期Web标准化交流会
钟志 第八期Web标准化交流会
 
twMVC#19 | opserver監控服務的解決
twMVC#19 | opserver監控服務的解決twMVC#19 | opserver監控服務的解決
twMVC#19 | opserver監控服務的解決
 
Terracotta And Continuent Based Clustering Architecture
Terracotta And Continuent Based Clustering ArchitectureTerracotta And Continuent Based Clustering Architecture
Terracotta And Continuent Based Clustering Architecture
 
一拍一产品背后的故事(React实战)
一拍一产品背后的故事(React实战)一拍一产品背后的故事(React实战)
一拍一产品背后的故事(React实战)
 
[Flash开发者交流][2010.05.30]avm2虚拟机浅析与as3性能优化(陈士凯)
[Flash开发者交流][2010.05.30]avm2虚拟机浅析与as3性能优化(陈士凯)[Flash开发者交流][2010.05.30]avm2虚拟机浅析与as3性能优化(陈士凯)
[Flash开发者交流][2010.05.30]avm2虚拟机浅析与as3性能优化(陈士凯)
 
高性能远程调用解决方案
高性能远程调用解决方案高性能远程调用解决方案
高性能远程调用解决方案
 
twMVC#46_SQL Server 資料分析大躍進 Machine Learning Services
twMVC#46_SQL Server 資料分析大躍進 Machine Learning ServicestwMVC#46_SQL Server 資料分析大躍進 Machine Learning Services
twMVC#46_SQL Server 資料分析大躍進 Machine Learning Services
 
廖雪峰 Saa s ovp
廖雪峰 Saa s ovp廖雪峰 Saa s ovp
廖雪峰 Saa s ovp
 
110329 luopeng-sysopt-openkavass
110329 luopeng-sysopt-openkavass110329 luopeng-sysopt-openkavass
110329 luopeng-sysopt-openkavass
 
使用NodeJS构建静态资源管理系统
使用NodeJS构建静态资源管理系统使用NodeJS构建静态资源管理系统
使用NodeJS构建静态资源管理系统
 
Jsp讲义
Jsp讲义Jsp讲义
Jsp讲义
 
Asp.net mvc 培训
Asp.net mvc 培训Asp.net mvc 培训
Asp.net mvc 培训
 
Beyond rails server
Beyond rails serverBeyond rails server
Beyond rails server
 
腾讯大讲堂58 拍拍app platform中间件解决方案简介
腾讯大讲堂58 拍拍app platform中间件解决方案简介腾讯大讲堂58 拍拍app platform中间件解决方案简介
腾讯大讲堂58 拍拍app platform中间件解决方案简介
 

Performance Monitoring With AOP

  • 1. Performance Monitoring With AOP @ivannotes http://www.ivannotes.com
  • 2. Agenda  为什么需要对性能进行监控  哪些点需要进行性能监控  简单即是美— 如何来做性能监控  Future  参考资料  Q&A
  • 3. 为什么需要对性能进行监控  问道 哪个接口调用最耗时 哪个页面访问速度最慢 哪个接口调用次数最多 出问题的时候是哪个接口错误率最高  一切为了稳定,一切为了快速
  • 4. 哪些点需要进行性能监控  外部依赖 谨慎的处理外部依赖  页面访问 了解网站的运行状况  SPI 一旦发布就要终身负责
  • 5. 简单即是美—如何来做性能监控  性能统计 Perf4J  无缝监控  Delegator + Spring AOP  Rose Intercepter  AspectJ
  • 6. Perf4J  System.out.println(endTime – startTime);  编程模型 StopWatch sw = new **StopWatch(); sw.start(); // your code sw.stop(tag);
  • 7. Perf4J  结合 Commons Log Log logger = LogFactory.getLog(“performance”); StopWatch watch = new CommonsLogStopWatch(logger);  Log4j 配置 <appender name="delegatorPerfAppender" class="org.perf4j.log4j.AsyncCoalescingStatisticsAppender"> <param name="TimeSlice" value="60000" /> <appender-ref ref="delegatorAppender" /> </appender> <appender name="delegatorAppender" class="org.apache.log4j.DailyRollingFileAppender"> <param name="File" value="/performance.log" /> <param name="DatePattern" value="'.'yyyyMMdd" /> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="[%-5p %d{yyyy-MM-dd HH:mm:ss.SSS}] %l [%m] %n" /> </layout> </appender>
  • 8. Per4J  CoalescingStatistics
  • 9. 无缝监控  Delegator + Spring AOP 外部依赖约定使用 Delegator 封装,利用 Spring AOP 进行切片监控接口调用性能 实现文档: http://www.ivannotes.com/2012/spring-aop/
  • 10. 无缝监控  Rose Interceptor 利用 Rose 的 Interceptor 采用 round 机制对 Web 服务进行性能监控 public class WebPerfomanceInterceptor extends ControllerInterceptorAdapter { private static final Log logger = LogFactory.getLog(“performance"); @Override public int getPriority() { return 200; } @Override protected Object round(Invocation inv, InvocationChain chain) throws Exception { StringBuilder sb = new StringBuilder(); sb.append(inv.getRequest().getMethod()).append("|"); sb.append(inv.getResourceId()); StopWatch watch = new CommonsLogStopWatch(logger); try { watch.start(); return super.round(inv, chain); } finally { watch.stop(sb.toString()); } } }
  • 11. 无缝监控  AspectJ 对 SOA 服务进行监控 × Compile Time weaving √ Load Time weaving √ @AspectJ Style
  • 12. 无缝监控 1) Java agent 2) aop.xml 3) @AspectJ
  • 13. Future  Abstract & Open  Data Visualization  Dynamic Switch
  • 14. 参考资料  http://www.ivannotes.com/2012/spring-aop/  http://perf4j.codehaus.org/devguide.html  http://www.eclipse.org/aspectj/doc/released/adk15notebook/in  <Spring reference>  <AspectJ in Action>
  • 15. Q&A