16 ARTIFACTS TO CAPTURE WHEN THERE IS A PRODUCTION PROBLEM
KumarNagaraju4
30 views
48 slides
Oct 11, 2024
Slide 1 of 48
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
About This Presentation
Production problems can become tricky to troubleshoot if proper diagnostic information isn’t captured. In this session we will share with you 16 important artifacts which can consider capturing during a production problem. We will also discuss effective tools, techniques and tips that you can use ...
Production problems can become tricky to troubleshoot if proper diagnostic information isn’t captured. In this session we will share with you 16 important artifacts which can consider capturing during a production problem. We will also discuss effective tools, techniques and tips that you can use to analyze these artifacts.
Size: 2.77 MB
Language: en
Added: Oct 11, 2024
Slides: 48 pages
Slide Content
Ram Lakshmanan | architect: yCrash 16 Artifacts to Capture When There Is a Production Problem
How to analyze GC Log? https://developer.ibm.com/javasdk/tools/ IBM GC & Memory visualizer GCeasy yCrash https://gceasy.io/ Google Garbage cat ( cms ) https://code.google.com/archive/a/eclipselabs.org/p/garbagecat HP Jmeter https://h20392.www2.hpe.com/portal/swdepot/displayProductInfo.do?productNumber=HPJMETER 03 02 01 05 04 https://ycrash.io/
Case Study: Slowdown in Major Cloud Provider
1. GC Log 2. Thread Dump 360-degree data
What is Thread dump? https://tier1app.com/dist/sample/threaddump_QC1-031214.txt
2019-12-26 17:13:23 Full thread dump Java HotSpot (TM) 64-Bit Server VM (23.7-b01 mixed mode): "Reconnection-1" prio =10 tid =0x00007f0442e10800 nid =0x112a waiting on condition [0x00007f042f719000] java.lang.Thread.State : WAITING (parking) at sun.misc.Unsafe.park (Native Method) - parking to wait for <0x007b3953a98> (a java.util.concurrent.locks.AbstractQueuedSynchr ) at java.util.concurrent.locks.LockSupport.park (LockSupport.java:186) at java.lang.Thread.run (Thread.java:722) : : 1 2 3 1 Timestamp at which thread dump was triggered 2 JVM Version info 3 Thread Details - <<details in following slides>> Anatomy of thread dump "InvoiceThread-A996" prio =10 tid =0x00002b7cfc6fb000 nid =0x4479 runnable [0x00002b7d17ab8000] java.lang.Thread.State : RUNNABLE at com.buggycompany.rt.util.ItinerarySegmentProcessor.setConnectingFlight(ItinerarySegmentProcessor.java:380) at com.buggycompany.rt.util.ItinerarySegmentProcessor.processTripType0(ItinerarySegmentProcessor.java:366) at com.buggycompany.rt.util.ItinerarySegmentProcessor.processItineraryByTripType(ItinerarySegmentProcessor.java:254) at com.buggycompany.rt.util.ItinerarySegmentProcessor.templateMethod(ItinerarySegmentProcessor.java:399) at com.buggycompany.qc.gds.InvoiceGeneratedFacade.readTicketImage (InvoiceGeneratedFacade.java:252) at com.buggycompany.qc.gds.InvoiceGeneratedFacade.doOrchestrate (InvoiceGeneratedFacade.java:151) at com.buggycompany.framework.gdstask.BaseGDSFacade.orchestrate (BaseGDSFacade.java:32) at com.buggycompany.framework.gdstask.BaseGDSFacade.doWork (BaseGDSFacade.java:22) at com.buggycompany.framework.concurrent.BuggycompanyCallable.call (buggycompanyCallable.java:80) at java.util.concurrent.FutureTask$Sync.innerRun (FutureTask.java:334) at java.util.concurrent.FutureTask.run (FutureTask.java:166) at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:615) at java.lang.Thread.run (Thread.java:722)
"InvoiceThread-A996" prio =10 tid =0x00002b7cfc6fb000 nid =0x4479 runnable [0x00002b7d17ab8000] java.lang.Thread.State : RUNNABLE at com.buggycompany.rt.util.ItinerarySegmentProcessor.setConnectingFlight(ItinerarySegmentProcessor.java:380) at com.buggycompany.rt.util.ItinerarySegmentProcessor.processTripType0(ItinerarySegmentProcessor.java:366) at com.buggycompany.rt.util.ItinerarySegmentProcessor.processItineraryByTripType(ItinerarySegmentProcessor.java:254) at com.buggycompany.rt.util.ItinerarySegmentProcessor.templateMethod(ItinerarySegmentProcessor.java:399) at com.buggycompany.qc.gds.InvoiceGeneratedFacade.readTicketImage (InvoiceGeneratedFacade.java:252) at com.buggycompany.qc.gds.InvoiceGeneratedFacade.doOrchestrate (InvoiceGeneratedFacade.java:151) at com.buggycompany.framework.gdstask.BaseGDSFacade.orchestrate (BaseGDSFacade.java:32) at com.buggycompany.framework.gdstask.BaseGDSFacade.doWork (BaseGDSFacade.java:22) at com.buggycompany.framework.concurrent.BuggycompanyCallable.call (buggycompanyCallable.java:80) at java.util.concurrent.FutureTask$Sync.innerRun (FutureTask.java:334) at java.util.concurrent.FutureTask.run (FutureTask.java:166) at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:615) at java.lang.Thread.run (Thread.java:722) 1 2 3 4 5 6 7 1 Thread Name - InvoiceThread-A996 2 Priority - Can have values from 1 to 10 3 Thread Id - 0x00002b7cfc6fb000 – Unique ID assigned by JVM. It's returned by calling the Thread.getId () method. 4 Native Id - 0x4479 - This ID is highly platform dependent. On Linux, it's the pid of the thread. On Windows, it's simply the OS-level thread ID within a process. On Mac OS X, it is said to be the native pthread_t value. 5 Address space - 0x00002b7d17ab8000 - 6 Thread State - RUNNABLE 7 Stack trace -
How to analyze Thread dump? https://www.ibm.com/support/pages/ibm-thread-and-monitor-dump-analyzer-java-tmda IBM TDMA FastThread https://fastthread.io/ 03 02 https://tinyurl.com/wq95weo Sample thread report yCrash https://ycrash.io/ 01
What is metada ? hostName = ip-172-31-4-96.us-west-1.compute.internal processId = 5013 appName = aps whoami = ec2-user javaVersion = java version "1.8.0_131", Java(TM) SE Runtime Environment (build 1.8.0_131-b11), Java HotSpot (TM) 64-Bit Server VM (build 25.131-b11, mixed mode), osVersion = Linux ip-172-31-4-96.us-west-1.compute.internal 4.14.243-185.433.amzn2.x86_64 #1 SMP Mon Aug 9 05:55:52 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux, tags= manualCapture , release 2.01
If you want to learn more… Ram Lakshmanan [email protected] @tier1app linkedin.com/company/ ycrash This deck will be published in: https://blog.ycrash.io https://ycrash.io/java-performance-training Online-Training: Java Performance/Troubleshooting Master class