Thread Dump Analysis
Upcoming SlideShare
Loading in...5
×
 

Thread Dump Analysis

on

  • 2,718 views

 

Statistics

Views

Total Views
2,718
Views on SlideShare
2,629
Embed Views
89

Actions

Likes
1
Downloads
49
Comments
0

1 Embed 89

http://jug.lv 89

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Thread Dump Analysis Thread Dump Analysis Presentation Transcript

  • OverviewReal life situationsThread dump formatTaking thread dumpsTDA toolsReading materialQuestions
  • Real life situations
  • Problems with I/OThreads maybe blocked or perform slowly during access to I/O resources: File system Network DatabaseSingle or multiple thread dumps may help understading the problem
  • Problems with algorithmsAlgorithm complexity is not suited well for the data set sizeAlgorithm is overusing expensive resources or memoryAlgorithm is overusing locks, while it can be implemented in a lock-free mannerSingle or multiple thread dumps may help noticing the problem
  • Problems with locks and syncronizationNo locking (not thread-safe implementations)Deadlocks (overly syncronised)Lock contention (overly syncronised)Lock overhead (too many locks)Single or multiple thread dumps may explain the situation
  • Example: HashMap gives 100% CPU loadUsage of not syncronised HashMap in a multi-threaded applicationIn certain situations it goes into infinite loopThis causes 100% CPU loadThe probabilty of entering infinite loop depends on the size of the HashMapSingle thread dump reveals the problem
  • From Wikipedia: Deadlocks “A deadlock is a situation in which two or more competing actions are each waiting for the other to finish, and thus neither ever does.
  • DeadlocksIn real life, deadlocks are pretty rareCPU usage is usally close to 0Single thread dump can reveal a deadlock situation
  • Lock contentionFrom Wikipedia: “This occurs whenever one process or thread attempts to acquire a lock held by another process or thread. The more granular the available locks, the less likely one process/thread will request a lock held by the other. (For example, locking a row rather than the entire table, or locking a cell rather than the entire row.)
  • Lock contentionThe most common problem with multi-threaded applications related to lockhandlingSometimes easy, sometimes very hard to detectYou can only see one layer at a timeMultiple thread dumps may help to detect lock contention situations
  • Sporadic application behaviourMay be related to not thread safe codeMay be related to load patternsMay be related to specific dataThreads dumps may or may not help
  • Thread dump format
  • FormatsFormats differ for various JVM and application server implementationsThere is no tool that supports them allThough format is usually very readble and follows same principles
  • HotSpot format
  • Thread states Ihttp://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Thread.State.html “A thread can be in one of the following states: NEW - A thread that has not yet started is in this state. RUNNABLE - A thread executing in the Java virtual machine is in this state. BLOCKED - A thread that is blocked waiting for a monitor lock is in this state.
  • Thread states II“WAITING - A thread that is waiting indefinitely for another thread to perform aparticular action is in this state.TIMED_WAITING - A thread that is waiting for another thread to perform anaction for up to a specified waiting time is in this state.TERMINATED - A thread that has exited is in this state.
  • Taking thread dumps
  • How?jstackjconsolejvisualvmwrite your own JMX clientuse your favorite profiler
  • Demo
  • Thread dumpanalysis tools
  • TDA toolsIBM Thread and Monitor Dump analysisJava Thread Dump AnalyzerSamuraiThread Dump AnalyzerThread Dump Viewer
  • Demo
  • Book
  • Questions?
  • JVM Internals TrainingAestas/IT organizes "JVM Internals" training on March 25/26, 2013.This 2–day course takes the developer on an in-depth tour of the Java Virtual Machine.Intended for experienced JVM-based programmers, who want to get deeper with theplatform, this course will introduce the major subsystems of the JVM and practical waysto apply this knowledge in real applications.
  • Topics IHistory of Java and JVMSpecificationsBytecodeBase componentsDetailed architectureJIT compilationGarbage collectionThreadsLocksClassloading
  • Topics IISecurityMonitoring toolsJava agentsDebuggingMemory analysisTuning principlesGC tuningResponsiveness and throughputTuning Options
  • RegistrationTraining registration at:http://aestasit.com/jvm-training-riga-2013Or by sending e-mail to:training@aestasit.com
  • Thanks!