Date post: | 06-May-2015 |
Category: |
Technology |
Upload: | ashleypuls |
View: | 473 times |
Download: | 7 times |
Troubleshooting Live Java Web Applications
By Ashley Puls
Sunday, November 10, 13
Sunday, November 10, 13
Troubleshooting
Locate and eliminate sources of trouble
Determine and settle problems
Solve problems quickly using a systematic approach
A logical process of elimination to identify the true source of the problem
Sunday, November 10, 13
How to Become a Good Troubleshooter
Practice makes perfect
Images From: http://www.tennismindgame.com/image-files/topspin-tennis-serve.jpg
Sunday, November 10, 13
How to Become a Good Troubleshooter
Practice makes perfect
Images From: http://www.tennismindgame.com/image-files/topspin-tennis-serve.jpg, http://blogs.telerik.com/images/default-source/jeff-fritz/toolbox.jpg?sfvrsn=0
Have a good set of tools
Sunday, November 10, 13
Outline
Examine a web application with multiple performance problems
Troubleshoot the problems using several tools
Discuss the pros and cons of each tool
Sunday, November 10, 13
What is the Application?
Sunday, November 10, 13
What is the Application?
Dear Developer,
I had some engineers develop “Running Central” to search for runners, races, and training teams. Can you please keep the site running?
Sincerely,Max SiegelCEO of USA Track and Field
Image From: http://www.sportsbusinessdaily.com/Journal/Issues/2012/06/18/Leagues-and-Governing-Bodies/~/media/8C99287D3B0E4784932EE3BF049E7DA9.ashx
Sunday, November 10, 13
What is the Application?
MySQL Database
hibernate
racerunners.war
jsp
Client
Client
Client
Servlet
Controller
Manager
Entities
Tomcat Application Server
Sunday, November 10, 13
Should we Jump into Troubleshooting?
Image From: http://toosoxy.files.wordpress.com/2011/04/cliff.jpg
Sunday, November 10, 13
What is Trouble?
Image From: http://1.bp.blogspot.com/-_LgC3yz9w4w/T4eI--IcvxI/AAAAAAAAA-o/VLdqkxyQpgg/s400/computerFire.jpg
Sunday, November 10, 13
What is Trouble?Site Inaccessible
Sunday, November 10, 13
What is Trouble?Site Inaccessible
ExceptionsIn Logs
Sunday, November 10, 13
What is Trouble?Site Inaccessible
ExceptionsIn Logs
Loading Slowly
Sunday, November 10, 13
What is Normal?
Images From: http://espn.go.com/mlb/statistics, http://www.franklinbaseball.com/pros/american-league/central/miguel-cabrera
Sunday, November 10, 13
Application Response Time
time per request
Memory Consumed
heap and PermGen
Thread Stateactive vs blocked
Thread Pool State
active vs max thread count
Database Response Time
time per request
What Are The Stats?
Sunday, November 10, 13
How To Gather The Stats
Logs
core JDK tools
Application Performance Monitoring Tools (APM)
Profilers
JMX Metrics
Framework/App Server Monitoring Tools
Sunday, November 10, 13
Basic information about each tool
Tools Overview Installation Cost Where to Find It For Production
Logs
New Relic
YourKit
JVisualVm
JConsole
JMap/JHat
JStack
Basic Information
Sunday, November 10, 13
Tools App Response Time
Database Response Time Thread State Thread Pool
State Memory
Logs
New Relic
YourKit
JVisualVm
JConsole
JMap/JHat
JStack
Data In Tool
Sunday, November 10, 13
Lets Talk to Some of Our Users
Sunday, November 10, 13
Image From: http://resources0.news.com.au/images/2012/08/10/1226447/688548-usain-bolt.jpg
Sunday, November 10, 13
Image From: http://resources0.news.com.au/images/2012/08/10/1226447/688548-usain-bolt.jpg
Usain Bolt : Six Time Olympic Champion
Sunday, November 10, 13
I was looking for a 5K race on your site,
but it was loading like I was on a 56k
Image From: http://static.guim.co.uk/sys-images/Guardian/Pix/pictures/2012/8/9/1344533810934/f582144a-9dd2-44ed-9828-0ec1f5f768a8-460.jpeg
Sunday, November 10, 13
Lets Investigate!
Sunday, November 10, 13
New Relic
Application Performance Monitoring (APM) tool that monitors web
apps, mobile apps, servers, and databases
Sign up and download agent from the New Relic Website
Sunday, November 10, 13
Tools Overview Installation Cost Where to Find It For Production
Logs
New Relic APM solution restart app with agent
basic free, advanced cost www.newrelic.com
YourKit
JVisualVm
JConsole
JMap/JHat
JStack
Basic Information
Sunday, November 10, 13
Sunday, November 10, 13
Application Response Time
Sunday, November 10, 13
Application Response Time
Sunday, November 10, 13
Application Response Time
Sunday, November 10, 13
Sunday, November 10, 13
YourKit
Profiler that provides in depth CPU, thread, and memory profiling
Get license key and download from YourKit Website
Sunday, November 10, 13
Tools Overview Installation Cost Where to Find It For Production
Logs
New Relic APM solution restart app with agent
basic free, advanced cost www.newrelic.com
YourKit profiler restarts or attaches all features at cost www.yourkit.com
JVisualVm
JConsole
JMap/JHat
JStack
Basic Information
Sunday, November 10, 13
Sunday, November 10, 13
Sunday, November 10, 13
Sunday, November 10, 13
CPU Profiler
Sunday, November 10, 13
Sunday, November 10, 13
Sunday, November 10, 13
Sunday, November 10, 13
Tools App Response Time
Database Response Time Thread State Thread Pool
State Memory
Logs
New Relic
YourKit
JVisualVm
JConsole
JMap/JHat
JStack
Data In Tool
Sunday, November 10, 13
New Relic
Application Performance Monitoring (APM) tool that monitors web
apps, mobile apps, servers, and databases
Sign up and download agent from the New Relic Website
Sunday, November 10, 13
Sunday, November 10, 13
Sunday, November 10, 13
Sunday, November 10, 13
Heap Memory
Sunday, November 10, 13
Heap Memory
Non-Heap Memory
Sunday, November 10, 13
Heap Memory
Non-Heap Memory
Sunday, November 10, 13
JMap
Prints the memory map of a Java process
Commands
jmap -heap JAVA_PID > /tmp/jmap.out
jmap -dump:file=/tmp/heap_dump.map JAVA_PID
Sunday, November 10, 13
Tools Overview Installation Cost Where to Find It For Production
Logs
New Relic APM solution restart app with agent
basic free, advanced cost www.newrelic.com
YourKit
JVisualVm
JConsole
JMap/JHat prints memory map of Java process
attaches to running process free included with JDK
JStack
Basic Information
Sunday, November 10, 13
In a Terminal
Sunday, November 10, 13
In a Terminal
Sunday, November 10, 13
The File
Sunday, November 10, 13
The File
Heap Memory
Sunday, November 10, 13
The File
Heap Memory
Non-Heap Memory
Sunday, November 10, 13
The File
Heap Memory
Non-Heap Memory
Sunday, November 10, 13
In a Terminal
Sunday, November 10, 13
In a Terminal
Sunday, November 10, 13
The File
Sunday, November 10, 13
In a Terminal
Sunday, November 10, 13
In a Terminal
Sunday, November 10, 13
In a Terminal
Sunday, November 10, 13
In a Terminal
Sunday, November 10, 13
In a Terminal
Sunday, November 10, 13
Sunday, November 10, 13
Sunday, November 10, 13
Sunday, November 10, 13
Sunday, November 10, 13
Sunday, November 10, 13
Sunday, November 10, 13
Sunday, November 10, 13
YourKit
Profiler that provides in depth CPU, thread, and memory profiling
Get license key and download from YourKit Website
Sunday, November 10, 13
Sunday, November 10, 13
Sunday, November 10, 13
Non-Heap Memory
Heap Memory
Sunday, November 10, 13
Non-Heap Memory
Heap Memory
Sunday, November 10, 13
Sunday, November 10, 13
Sunday, November 10, 13
Sunday, November 10, 13
Sunday, November 10, 13
/** * Service that records stats on the cities and states queried by users when looking * for races. */public class RaceStatsServiceImpl implements RaceStatsService {
/** Holds the cities queried by users. */ private final Map<String, Integer> citiesQueried; /** Holds the states queried by users. */ private final Map<String, Integer> stateQueried;
public RaceStatsServiceImpl() { citiesQueried = new ConcurrentHashMap<String, Integer>(); stateQueried = new ConcurrentHashMap<String, Integer>(); }
Sunday, November 10, 13
/** * Service that records stats on the cities and states queried by users when looking * for races. */public class RaceStatsServiceImpl implements RaceStatsService {
/** Holds the cities queried by users. */ private final Map<String, Integer> citiesQueried; /** Holds the states queried by users. */ private final Map<String, Integer> stateQueried;
public RaceStatsServiceImpl() { citiesQueried = new ConcurrentHashMap<String, Integer>(); stateQueried = new ConcurrentHashMap<String, Integer>(); }
Two ConcurrentHashMaps
Sunday, November 10, 13
/** * Service that records stats on the cities and states queried by users when looking * for races. */public class RaceStatsServiceImpl implements RaceStatsService {
public void addCity(String city);
public void addState(String state);
public void String getMostQueriedForCity();
public void String getMostQueriedForState();
Sunday, November 10, 13
/** * Service that records stats on the cities and states queried by users when looking * for races. */public class RaceStatsServiceImpl implements RaceStatsService {
public void addCity(String city);
public void addState(String state);
public void String getMostQueriedForCity();
public void String getMostQueriedForState();
None of these methods remove from the
concurrent hash maps
Sunday, November 10, 13
Key Takeaway
Clean up memory in long running objects
Sunday, November 10, 13
The File
Sunday, November 10, 13
The File
Sunday, November 10, 13
Tools App Response Time
Database Response Time Thread State Thread Pool
State Memory
Logs
New Relic
YourKit
JVisualVm
JConsole
JMap/JHat
JStack
Data In Tool
Sunday, November 10, 13
Tools App Response Time
Database Response Time Thread State Thread Pool
State Memory
Logs
New Relic
YourKit
JVisualVm
JConsole
JMap/JHat
JStack
Data In Tool
Sunday, November 10, 13
Image From: http://news.images.itv.com/image/file/69820/article_9e6cab04948b5c33_1343574136_9j-4aaqsk.jpeg
Sunday, November 10, 13
Image From: http://news.images.itv.com/image/file/69820/article_9e6cab04948b5c33_1343574136_9j-4aaqsk.jpeg
Paula RadcliffeFemale Marathon World Record Holder
Sunday, November 10, 13
Image From: http://i3.manchestereveningnews.co.uk/incoming/article660410.ece/ALTERNATES/s615/C_71_article_1584722_image_list_image_list_item_0_image-660410.jpg
It was taking too long to find my fellow runners on
your site
Sunday, November 10, 13
Lets Investigate!
Sunday, November 10, 13
JVisualVM
Visual tool which provides heap dumps, memory leak information,
garbage collection monitoring, memory profiling, and CPU profiling
Attaches to local and remote running processes
Sunday, November 10, 13
Tools Overview Installation Cost Where to Find It For Production
Logs
New Relic APM solution restart app with agent
basic free, advanced cost www.newrelic.com
YourKit profiler restart or attachfeature dependent all features at cost www.yourkit.com
JVisualVm profiler attaches to running process free included with JDK
JConsole
JMap/JHat prints memory map of Java process
attaches to running process free included with JDK
JStack
Basic Information
Sunday, November 10, 13
Sunday, November 10, 13
Sunday, November 10, 13
Sunday, November 10, 13
Memory Information
Sunday, November 10, 13
Memory Information
Sunday, November 10, 13
Memory Information
Sunday, November 10, 13
Sunday, November 10, 13
Sunday, November 10, 13
Sunday, November 10, 13
Sunday, November 10, 13
Sunday, November 10, 13
Kill Dash 3
Provides the current stack trace for each thread in a local JVM (thread dump)
Available on linux and macs (ctrl+break on windows)
Command: kill -3 PID
Sunday, November 10, 13
JStack
Provides the current stack trace for each thread in a local or remote
JVM (thread dump)
Command: jstack -l JAVA_PID > /tmp/jstack.out
Sunday, November 10, 13
Tools Overview Installation Cost Where to Find It For Production
Logs
New Relic APM solution restart app with agent
basic free, advanced cost www.newrelic.com
YourKit profiler restart or attachfeature dependent all features at cost www.yourkit.com
JVisualVm profiler attaches to running process free included with JDK
JConsole
JMap/JHat prints memory map of Java process
attaches to running process free included with JDK
JStack prints thread dump of Java process
attaches to running process free included with JDK
Basic Information
Sunday, November 10, 13
In a Terminal
Sunday, November 10, 13
The File
Sunday, November 10, 13
The File
Sunday, November 10, 13
New Relic
Application Performance Monitoring (APM) tool that monitors web
apps, mobile apps, servers, and databases
Sign up and download agent from the New Relic Website
Sunday, November 10, 13
Sunday, November 10, 13
Sunday, November 10, 13
Sunday, November 10, 13
Sunday, November 10, 13
Sunday, November 10, 13
Sunday, November 10, 13
Sunday, November 10, 13
Sunday, November 10, 13
Sunday, November 10, 13
/** Stores stats on the last names of runners which have been queried. */public class RunnerStatsServiceImpl implements RunnerStatsService { /** Stores the last name of queried runners. */ private final Queue<String> lastNamesQueried = new ArrayBlockingQueue<String>(100);
/** * Adds the last name input value to the stats service. * @param lastName A last name that was queried. */ public void addEntries(String lastName) { if (lastName != null && !lastName.isEmpty()) { while (!lastNamesQueried.offer(lastName.trim())) { try { Thread.sleep(100); } catch (InterruptedException e) { // ignore this exception } } } }
/** * Processes the last name stats currently held in the service. */ public void processLastNameStats() { . . . }
Sunday, November 10, 13
/** Stores stats on the last names of runners which have been queried. */public class RunnerStatsServiceImpl implements RunnerStatsService { /** Stores the last name of queried runners. */ private final Queue<String> lastNamesQueried = new ArrayBlockingQueue<String>(100);
/** * Adds the last name input value to the stats service. * @param lastName A last name that was queried. */ public void addEntries(String lastName) { if (lastName != null && !lastName.isEmpty()) { while (!lastNamesQueried.offer(lastName.trim())) { try { Thread.sleep(100); } catch (InterruptedException e) { // ignore this exception } } } }
/** * Processes the last name stats currently held in the service. */ public void processLastNameStats() { . . . }
Where the threads are sleeping
Sunday, November 10, 13
/** Stores stats on the last names of runners which have been queried. */public class RunnerStatsServiceImpl implements RunnerStatsService { /** Stores the last name of queried runners. */ private final Queue<String> lastNamesQueried = new ArrayBlockingQueue<String>(100);
/** * Adds the last name input value to the stats service. * @param lastName A last name that was queried. */ public void addEntries(String lastName) { if (lastName != null && !lastName.isEmpty()) { while (!lastNamesQueried.offer(lastName.trim())) { try { Thread.sleep(100); } catch (InterruptedException e) { // ignore this exception } } } }
/** * Processes the last name stats currently held in the service. */ public void processLastNameStats() { . . . }
Where the threads are sleeping
queue limited to 100 strings
Sunday, November 10, 13
/** Stores stats on the last names of runners which have been queried. */public class RunnerStatsServiceImpl implements RunnerStatsService { /** Stores the last name of queried runners. */ private final Queue<String> lastNamesQueried = new ArrayBlockingQueue<String>(100);
/** * Adds the last name input value to the stats service. * @param lastName A last name that was queried. */ public void addEntries(String lastName) { if (lastName != null && !lastName.isEmpty()) { while (!lastNamesQueried.offer(lastName.trim())) { try { Thread.sleep(100); } catch (InterruptedException e) { // ignore this exception } } } }
/** * Processes the last name stats currently held in the service. */ public void processLastNameStats() { . . . }
Where the threads are sleeping
queue limited to 100 strings
Sunday, November 10, 13
Key Takeaway
Do not block threads
Sunday, November 10, 13
The File
Sunday, November 10, 13
The File
waiting for more requests to come in
Sunday, November 10, 13
Tools App Response Time
Database Response Time Thread State Thread Pool
State Memory
Logs
New Relic
YourKit
JVisualVm
JConsole
JMap/JHat
JStack
Data In Tool
Sunday, November 10, 13
Tools App Response Time
Database Response Time Thread State Thread Pool
State Memory
Logs
New Relic
YourKit
JVisualVm
JConsole
JMap/JHat
JStack
Data In Tool
Sunday, November 10, 13
Image From: http://www.webrun.com.br/multimidia/fotos/2011/20110926_175711_g.jpg
Sunday, November 10, 13
Image From: http://www.webrun.com.br/multimidia/fotos/2011/20110926_175711_g.jpg
Patrick Makau Musyoki
Previous Marathon World Record Holder
Sunday, November 10, 13
Image From: http://simonfreeman.co.uk/wp-content/uploads/2013/04/image-4.jpeg
I tried to look for marathons on your site but could not access it
Sunday, November 10, 13
Lets Investigate!
Sunday, November 10, 13
JConsole
Graphical User Interface (GUI) which displays Java Management
Extension (JMX) metrics for a local or remote JVMs
JMX metrics should be enabled in your application server
Sunday, November 10, 13
Tools Overview Installation Cost Where to Find It For Production
Logs
New Relic APM solution restart app with agent
basic free, advanced cost www.newrelic.com
YourKit profiler restart or attachfeature dependent all features at cost www.yourkit.com
JVisualVm profiler attaches to running process free included with JDK
JConsole JMX metrics attaches to running process free included with JDK
JMap/JHat prints memory map of Java process
attaches to running process free included with JDK
JStack prints thread dump of Java process
attaches to running process free included with JDK
Basic Information
Sunday, November 10, 13
Sunday, November 10, 13
Sunday, November 10, 13
Sunday, November 10, 13
Sunday, November 10, 13
Sunday, November 10, 13
JVM specific mbeans
Sunday, November 10, 13
Tomcat Application Server mbeans
JVM specific mbeans
Sunday, November 10, 13
Sunday, November 10, 13
Sunday, November 10, 13
Sunday, November 10, 13
Sunday, November 10, 13
Sunday, November 10, 13
Can you do this in JVisualVM?
Sunday, November 10, 13
Sunday, November 10, 13
Sunday, November 10, 13
Sunday, November 10, 13
Sunday, November 10, 13
Sunday, November 10, 13
Sunday, November 10, 13
Sunday, November 10, 13
Tomcat Application Server mbeans
JVM specific mbeans
Sunday, November 10, 13
Sunday, November 10, 13
Sunday, November 10, 13
New Relic
Application Performance Monitoring (APM) tool that monitors web
apps, mobile apps, servers, and databases
Sign up and download agent from the New Relic Website
Sunday, November 10, 13
Sunday, November 10, 13
Sunday, November 10, 13
Sunday, November 10, 13
Sunday, November 10, 13
Sunday, November 10, 13
Sunday, November 10, 13
The File vi tomcat/config/server.xml
Sunday, November 10, 13
The File vi tomcat/config/server.xml
Sunday, November 10, 13
The File vi tomcat/config/server.xml
Sunday, November 10, 13
What Should Be The Size Of The Pool?
• If the pool size is too small, then requests back up
Image From: http://terrortrendsbulletin.files.wordpress.com/2012/11/airport-security-lines1.jpg
Sunday, November 10, 13
What Should Be The Size Of The Pool?
• If the pool size is too large, then system resources
might become exhausted
Sunday, November 10, 13
What Should Be The Size Of The Pool?
• If the pool size is too large, then system resources
might become exhausted
Images From: http://static.ddmcdn.com/gif/airport-security-detector1.jpg, http://graphics8.nytimes.com/images/2012/10/07/travel/07GETAWAY_SPAN/07GETAWAY_SPAN-articleLarge.jpg
Sunday, November 10, 13
What Should Be The Size Of The Pool?
• Pool size limiting factors
– The amount of memory
• In Java 6, the default thread stack size on Sparc is 512k for the
32-bit VM and 1024k for the 64-bit VM
Hotspot Thread Stack Numbers: http://www.oracle.com/technetwork/java/hotspotfaq-138619.html
Sunday, November 10, 13
What Should Be The Size Of The Pool?
• Pool size limiting factors
– The amount of memory
• In Java 6, the default thread stack size on Sparc is 512k for the
32-bit VM and 1024k for the 64-bit VM
–The number of CPUs
• Context switching could become an issue
Hotspot Thread Stack Numbers: http://www.oracle.com/technetwork/java/hotspotfaq-138619.html
Sunday, November 10, 13
Key Takeaway
Thread pools need to be tuned
Sunday, November 10, 13
Sunday, November 10, 13
Sunday, November 10, 13
Tools App Response Time
Database Response Time Thread State Thread Pool
State Memory
Logs
New Relic
YourKit
JVisualVm
JConsole
JMap/JHat
JStack
Data In Tool
Sunday, November 10, 13
Image From: http://coedmagazine.files.wordpress.com/2012/08/carmelita-jeter-7.jpg
Sunday, November 10, 13
Image From: http://coedmagazine.files.wordpress.com/2012/08/carmelita-jeter-7.jpg
Carmelita JeterFastest Woman Alive in the
100 meter sprint
Sunday, November 10, 13
Image From: http://www4.pictures.zimbio.com/gi/Carmelita+Jeter+Olympics+Day+14+Athletics+G48Jqgqo2nml.jpg
My team’s 4x100 time is faster than your website.
Get that fixed!
Sunday, November 10, 13
Lets Investigate!
Sunday, November 10, 13
Logs
Application, server, and database logs provide information developers
consider important for evaluating the status of the application
The quality of the logs varies significantly between products
Tools like Splunk and Loggly can help analyze logs
Sunday, November 10, 13
Tools Overview Installation Cost Where to Find It For Production
Logs application, server, framework, database depends free depends
New Relic APM solution restart app with agent
basic free, advanced cost www.newrelic.com
YourKit profiler restart or attachfeature dependent all features at cost www.yourkit.com
JVisualVm profiler attaches to running process free included with JDK
JConsole JMX metrics attaches to running process free included with JDK
JMap/JHat prints memory map of Java process
attaches to running process free included with JDK
JStack prints thread dump of Java process
attaches to running process free included with JDK
Basic Information
Sunday, November 10, 13
The File The Application Log
Sunday, November 10, 13
The File The Application Log
Sunday, November 10, 13
The File The Application Log
Sunday, November 10, 13
The File The App Server Log
Sunday, November 10, 13
The File host_access_log
Sunday, November 10, 13
The File host_access_log
Sunday, November 10, 13
The File catalina.out
Sunday, November 10, 13
The File catalina.out
Sunday, November 10, 13
The File catalina.out
Sunday, November 10, 13
The File applicationContext.xml
Sunday, November 10, 13
The File applicationContext.xml
Sunday, November 10, 13
The File MySql Logs
Sunday, November 10, 13
The File MySql Logs - error log
Sunday, November 10, 13
The File MySql Logs - slow sql config
Sunday, November 10, 13
The File MySql Logs - slow sql log
Sunday, November 10, 13
The File MySql Logs - slow sql log
Query Time Rows Examined
Sunday, November 10, 13
The File MySql Logs - slow sql log
Query Time Rows Examined
Sunday, November 10, 13
New Relic
Application Performance Monitoring (APM) tool that monitors web
apps, mobile apps, servers, and databases
Sign up and download agent from the New Relic Website
Sunday, November 10, 13
Sunday, November 10, 13
Sunday, November 10, 13
Sunday, November 10, 13
Sunday, November 10, 13
Sunday, November 10, 13
Sunday, November 10, 13
Sunday, November 10, 13
In a Terminal
Sunday, November 10, 13
In a Terminal
Sunday, November 10, 13
In a Terminal
Sunday, November 10, 13
In a Terminal
Sunday, November 10, 13
In a Terminal
Sunday, November 10, 13
In a Terminal
Sunday, November 10, 13
In a Terminal
Sunday, November 10, 13
In a Terminal
Sunday, November 10, 13
In a Terminal
Sunday, November 10, 13
In a Terminal
Sunday, November 10, 13
In a Terminal
Sunday, November 10, 13
Key Takeaway
Use indexes appropriately
Sunday, November 10, 13
In a Terminal
Sunday, November 10, 13
In a Terminal
Sunday, November 10, 13
In a Terminal
Sunday, November 10, 13
Tools App Response Time
Database Response Time Thread State Thread Pool
State Memory
Logs
New Relic
YourKit
JVisualVm
JConsole
JMap/JHat
JStack
Data In Tool
Sunday, November 10, 13
Tools Overview Installation Cost Where to Find It For Production
Logs application, server, framework, database depends free depends
New Relic APM solution restart app with agent
basic free, advanced cost www.newrelic.com
YourKit profiler restart or attachfeature dependent all features at cost www.yourkit.com
JVisualVm profiler attaches to running process free included with JDK
JConsole JMX metrics attaches to running process free included with JDK
JMap/JHat prints memory map of Java process
attaches to running process free included with JDK
JStack prints thread dump of Java process
attaches to running process free included with JDK
Basic Information
Sunday, November 10, 13
Tools Application Response Time
JConsole
JVisualVm - No Profiler
New Relic
JStack
Logs
Your Kit - No Profiler
JMap
Your Kit - With Profiler
JVisualVM - With Profiler
Basic Information
What is the impact of each tool?
Sunday, November 10, 13
Tools Application Response Time
JConsole None
JVisualVm - No Profiler None
New Relic Low
JStack Low
Logs Low - High
Your Kit - No Profiler High
JMap High
Your Kit - With Profiler Very High
JVisualVM - With Profiler Very High
Basic Information
Sunday, November 10, 13
Tools Application Response Time
JConsole None
JVisualVm - No Profiler None
New Relic Low
JStack Low
Logs Low - High
Your Kit - No Profiler High
JMap High
Your Kit - With Profiler Very High
JVisualVM - With Profiler Very High
Basic Information
Use In Production
Sunday, November 10, 13
Tools Application Response Time
JConsole None
JVisualVm - No Profiler None
New Relic Low
JStack Low
Logs Low - High
Your Kit - No Profiler High
JMap High
Your Kit - With Profiler Very High
JVisualVM - With Profiler Very High
Basic Information
Use In Production
Use In Development
Sunday, November 10, 13
Tools Overview Installation Cost Where to Find It For Production
Logs application, server, framework, database depends free depends yes
New Relic APM solution restart app with agent
basic free, advanced cost www.newrelic.com yes
YourKit profiler restart or attachfeature dependent all features at cost www.yourkit.com no
JVisualVm profiler attaches to running process free included with JDK basic: yes,
profiler: no
JConsole JMX metrics attaches to running process free included with JDK yes
JMap/JHat prints memory map of Java process
attaches to running process free included with JDK no
JStack prints thread dump of Java process
attaches to running process free included with JDK yes
Basic Information
Sunday, November 10, 13
Image From: http://www.tbkconsult.com/blog/wp-content/uploads/2011/07/Toolbox.jpg
I encourage you to add a new tool to your tool box
Sunday, November 10, 13
Image From: http://www.tbkconsult.com/blog/wp-content/uploads/2011/07/Toolbox.jpg
I encourage you to add a new tool to your tool box
Add the tool sooner rather than later
Sunday, November 10, 13
Image From: http://www.mediaemerging.com/wp-content/uploads/2010/11/Wrong-Tool-for-the-Job2.jpg
You should learn how to use the tools before you need them
Sunday, November 10, 13
Images From: http://seattletimes.com/ABPub/2011/09/25/2016318932.jpg, http://static.guim.co.uk/sys-images/Sport/Pix/pictures/2007/12/08/PaulaRadcliffe_ap_SethWenig.jpg, http://www.runnersworld.com/sites/default/files/rw/Jeter-Carmelita-Happy-300x200.jpg, http://www.thefumble.com/sites/captainwag.com/files/wp-content/uploads/2012/08/BOLTBDAY.gif
WE WANT HAPPY USERS
Sunday, November 10, 13