240 likes | 392 Views
Open Source Performance Monitoring Tools, Tips and Tricks for Java. Matt Secoske Consultant - Bass & Associates http://www.bass-inc.com email: matt@secosoft.net. Planning Process Tools Tips, Tricks. Agenda. Where does performance matter?. ... where your business requires it.
E N D
Open Source Performance Monitoring Tools, Tips and Tricks for Java Matt Secoske Consultant - Bass & Associates http://www.bass-inc.com email: matt@secosoft.net
Planning Process Tools Tips, Tricks Agenda
Determine your performance goals Create testing scenarios Determine monitoring/profiling needs Integrate into development process - continuous performance testing? Integrate into production environment Plan for Performance
Hardware (web, app, db servers)- CPU- Memory- Cache Hits/Misses- Disk/Network speed Java Specific- GC- Application specific metrics What to monitor
Load Testing / Driving Logging / Log Analysis Contained Profiling (Profiler wraps Application) External Profiling (JVMPI) java.lang.instrumentation Profiling Tools
Decorates existing JUnit tests Great for running benchmarks against a particular test case (or cases) while refactoring. Not so great as an over-all monitoring solution JUnitPerf
Clusterable performance testing Stress, Load, Capacity and Functional Testing HTTP, Web Services, RPC, JMS, JUnit, Proxy for recording traffic (real users) Scriptable in Jython The Grinder
Easy Common (Web server logs) Affects environment (file I/O) Affects code Generally solved by N.I.H. code Accuracy Log files / Analysis
Log4J or other logging tool+ Aspects= simple, transparent, targeted Logging Tools
Handcarved (AspectJ, AspectWerkz) Java Interactive Profiler GlassBox Inspector Aspect-based Logging Tools –
Sun's new JVM profiling tool Part of NetBeans Profiler extension Local or Remote Profiling Limited JVM support (mainly 5.0+) JFluid / NetBeans Profiler
Test and Performance Tools Platform Local or remote profiling Requires JVM agent for remote Eclipse TPTP
Treat performance as a test case red bar – green bar – refactor Real-world data + Real-world usage patterns = accurate benchmarks Put in just enough metrics to get your performance measurements Performance Test != Production Keep some monitoring in production Tips, Tricks
Performance Monitoring, like most things in software development, is an iterative process. Initial setup will take longer than expected. Its worth it. “Premature optimization is the root of all evil” - Hoare, Knuth Know when and what to optimize – comes from experience and profiling Make performance a part of your development process Final Thoughts
JMeter: http://jakarta.apache.org/jmeter The Grinder: http://grinder.sf.net JUnitPerf: http://clarkware.com/software/JUnitPerf.html Log4J: http://logging.apache.org/log4j/docs/ GlassBox Inspector: https://glassbox-inspector.dev.java.net/ Java Interactive Profiler: http://jiprof.sourceforge.net/ NetBeans Profiler: http://www.netbeans.org/products/profiler/index.html Eclipse TPTP: http://www.eclipse.org/tptp/ Links - Tools
“Add Object Cache Monitoring using JMX and Aspects” - Srini Penchikala http://www.devx.com/Java/Article/29526 “Build your own profiling tool” - Andrew Wilcox http://www-128.ibm.com/developerworks/java/library/j-jip/?ca=dgr-lnxw01JavaProfiling “Performance monitoring with AspectJ, Part 1” - Ron Bodkin http://www-128.ibm.com/developerworks/java/library/j-aopwork10/ “Continuous Performance Testing with JUnitPerf” - Mike Clark http://www.javapronews.com/javapronews-47-20030721ContinuousPerformanceTestingwithJUnitPerf.html Links - Articles