- Introduction
- Quick Start
- Design
- Tutorial
- Spring MVC
- JSP/JSTL/Servlet
- JQuery and plugins
- Ajax
- Twitter Bootstrap CSS
- SiteMesh
- YUICompressor
- Spring Restful Service
- JAX-WS/CXF
- Spring Data JPA
- JPA/Hibernate
- MyBatis
- Database
- H2 Database
- Datasource
- Transaction
- Redis
- Cache Overview
- Guava Cache
- Ehcache
- Memcached
- Shiro Security
- Crypto
- Schedule/Quartz
- Jmx
- System Protection
- Hystrix
- Rate Limiter
- Monitoring and Metrics
- Metrics-library
- Graphite
- Logging/Slf4j/Logback
- Logstash
- Spring
- Validation Overview
- JQuery Validation
- Hibernate Validator
- General Utilizes
- JSON/JAXB
- Date
- Test Overview
- Unit Test/Mockito/AssertJ
- Selenium2
- BDD
- Performace-test
- JMeter
- Profiler
- Simulator Overview
- Nodejs
- Eclipse
- Maven
- Sonar
- git
- Travis CI
- Jetty
- Micro-Service Architecture/Executable War
- AssertJ
- CreateNewProject
- Dozer
- Graphite-Windows
- Hello-Everybody
- Jaxb
- Json
- Mock
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
Profiler
选型
在性能调优时,总想知道一些函数消耗的时间,找出瓶颈。有很多开源方案能满足这一点,几者之间相差毫厘而已。
从大的分类上,Profiler工具不同于Netflix Servo,Yammer Metric, etsy statsd 这些Monitor/Metrics工具,莫要搞混了。
基于编码或AOP的:
- JaMon,可能最为老牌,但也有很久没更新了。
- JavaMelody,LGPL的协议,而且管得太多了,连CPU、内存都管,Web Dashboard也不好看。
- Perf4j,没有内置Web Dashboard。
- JavaSimon,各方面正合适,作者原来也用JaMon,后来加了树型排列结果与纳秒级统计的支持,详见Javasimon自述
基于JVM整体的profiler:VisualVM,EClipse Profiler,Yourkit 等,经常过大过慢和崩溃,失望了几次后就不再尝试了。
JavaSimon
Simon不是西蒙,是Simple Monitoring的意思,太简单了,和其他几种monitor也差不多,几乎没什么好讲的,看官方的简短文档就足够。
在showcase中作了演示,手工点击综合演示或运行Jmeter脚本后,查看dashboard即可看见结果。
一、pom.xml,加入core与dashboard的依赖:
<dependency>
<groupId>org.javasimon</groupId>
<artifactId>javasimon-spring</artifactId>
<version>3.3.0</version>
</dependency>
<dependency>
<groupId>org.javasimon</groupId>
<artifactId>javasimon-console-embed</artifactId>
<version>3.3.0</version>
</dependency>
二、web.xml,加入dashboard:
<servlet>
<servlet-name>SimonConsoleServlet</servlet-name>
<servlet-class>org.javasimon.console.SimonConsoleServlet</servlet-class>
<init-param>
<param-name>url-prefix</param-name>
<param-value>/javasimon</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>SimonConsoleServlet</servlet-name>
<url-pattern>/javasimon/*</url-pattern>
</servlet-mapping>
三、applicationContext.xml 加入AOP设置
如下片段监控用@monitored定义了的类或方法:
<!-- 调用StopWatch计时的Interceptor -->
<bean id="monitoringInterceptor" class="org.javasimon.spring.MonitoringInterceptor" />
<!-- 监控定义了@Monitored的方法 -->
<bean id="monitoringAdvisor" class="org.springframework.aop.support.DefaultPointcutAdvisor">
<property name="advice" ref="monitoringInterceptor" />
<property name="pointcut">
<bean class="org.javasimon.spring.MonitoredMeasuringPointcut" />
</property>
</bean>
如果在其他xml文件未包含DefaultAdvisorAutoProxyCreator,此处需要定义:
<bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator">
<property name="proxyTargetClass" value="true" />
</bean>
四、在已知一定要监控的类或方法上加@Monitored。
五、不修改代码监控新的方法
如下AOP定义片段监控了NotifyMessageProducer与BusinessLogger的公共方法:
<aop:config>
<aop:advisor advice-ref="monitoringInterceptor" pointcut="execution(public * org.springside..NotifyMessageProducer.*(..))
|| execution(public * org.springside..BusinessLogger.*(..))" />
</aop:config>
六、(可选)监控jdbc访问速度 换用新的jdbc driver,在旧的jdbc url里插入simon
jdbc.driver=org.javasimon.jdbc4.Driver
jdbc.url=jdbc:simon:h2:file:~/.h2/showcase4;
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论