Successfully reported this slideshow.
Your SlideShare is downloading. ×

More Related Content

Related Audiobooks

Free with a 30 day trial from Scribd

See all

Thread Dump Analysis

  1. 1. Overview Real life situations Thread dump format Taking thread dumps TDA tools Reading material Questions
  2. 2. Real life situations
  3. 3. Problems with I/O Threads maybe blocked or perform slowly during access to I/O resources: File system Network Database Single or multiple thread dumps may help understading the problem
  4. 4. Problems with algorithms Algorithm complexity is not suited well for the data set size Algorithm is overusing expensive resources or memory Algorithm is overusing locks, while it can be implemented in a lock-free manner Single or multiple thread dumps may help noticing the problem
  5. 5. Problems with locks and syncronization No 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
  6. 6. Example: HashMap gives 100% CPU load Usage of not syncronised HashMap in a multi-threaded application In certain situations it goes into infinite loop This causes 100% CPU load The probabilty of entering infinite loop depends on the size of the HashMap Single thread dump reveals the problem
  7. 7. 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.
  8. 8. Deadlocks In real life, deadlocks are pretty rare CPU usage is usally close to 0 Single thread dump can reveal a deadlock situation
  9. 9. Lock contention From 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.)
  10. 10. Lock contention The most common problem with multi-threaded applications related to lock handling Sometimes easy, sometimes very hard to detect You can only see one layer at a time Multiple thread dumps may help to detect lock contention situations
  11. 11. Sporadic application behaviour May be related to not thread safe code May be related to load patterns May be related to specific data Threads dumps may or may not help
  12. 12. Thread dump format
  13. 13. Formats Formats differ for various JVM and application server implementations There is no tool that supports them all Though format is usually very readble and follows same principles
  14. 14. HotSpot format
  15. 15. Thread states I http://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.
  16. 16. Thread states II “ WAITING - A thread that is waiting indefinitely for another thread to perform a particular action is in this state. TIMED_WAITING - A thread that is waiting for another thread to perform an action for up to a specified waiting time is in this state. TERMINATED - A thread that has exited is in this state.
  17. 17. Taking thread dumps
  18. 18. How? jstack jconsole jvisualvm write your own JMX client use your favorite profiler
  19. 19. Demo
  20. 20. Thread dump analysis tools
  21. 21. TDA tools IBM Thread and Monitor Dump analysis Java Thread Dump Analyzer Samurai Thread Dump Analyzer Thread Dump Viewer
  22. 22. Demo
  23. 23. Book
  24. 24. Questions?
  25. 25. JVM Internals Training Aestas/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 the platform, this course will introduce the major subsystems of the JVM and practical ways to apply this knowledge in real applications.
  26. 26. Topics I History of Java and JVM Specifications Bytecode Base components Detailed architecture JIT compilation Garbage collection Threads Locks Classloading
  27. 27. Topics II Security Monitoring tools Java agents Debugging Memory analysis Tuning principles GC tuning Responsiveness and throughput Tuning Options
  28. 28. Registration Training registration at: http://aestasit.com/jvm-training-riga-2013 Or by sending e-mail to: training@aestasit.com
  29. 29. Thanks!

×