1. 미들웨어이야기/01. JVM
Thread dump(Javacore) 분석
OSSW(Open Source System SoftWare
2009. 6. 8. 15:09
이 Thread dump를 어떻게 분석을 하고, System의 Bottle neck을 찾아내는데 이용할지를 설명 하겠습니다..
System이 Hangup이나 slowdown에 걸렸을 때, 먼저 Thread dump를 추출해야 합니다. 이때 한 개가 아니라 3~5초 간격으로 5개 정도의 dump를 추출해야 합니다.. 추출한 여러 개의 dump를 연결하면 각 Thread가 시간 별로 어떻게 변하고 있는 지를 판별할 수 있습니다.
먼저 각각의 Thread 덤프를 비교해서 보면, 각각의 Thread는 적어도 1~2개의 덤프 내에서 연속된 모습을 보여서는 안 되는 것이 정상입니다. 일반적으로Application은 내부적으로 매우 고속으로 처리되기 때문에, 하나의 Method에 1초 이상 머물러 있는다는 것은 거의 있을 수 없는 일입니다. Thread Dump의 분석은 각각의Thread가 시간이 지남에 따라서 진행되지 않고 멈춰 있는 Thread를 찾는 데서부터 시작 됩니다.
예를 들어서 설명해 보자. 아래의 프로그램을 보면 MY_THREAD_RUN()이라는 메소드에서부터 MethodA( )