본문 바로가기

개발/웹로직

Dump 만들기

Unix 시스템(Solaris, HP, AIX)
kill -3 <weblogic process id>를 사용하여 문제 진단에 필요한 스레드 덤프를 만듭니다. 교착 상태를 제대로 진단할 수 있도록 각 서버에서 5-10초 간격으로 여러 번 스레드를 만듭니다. 이 방법을 사용하려면 서버 프로세스를 nohup으로 실행해야 합니다. 

Windows, XP, NT
<Ctrl>-<Break>를 눌러서 문제 진단에 필요한 스레드 덤프를 만듭니다. 교착 상태를 제대로 진단할 수 있도록 각 서버에서 5-10초 간격으로 여러 번 스레드를 만듭니다. NT의 명령 셸에서 Ctrl-Break를 누릅니다. 

Linux
Linux 운영 체제의 스레드는 다른 운영 체제와 상이한 모습을 하고 있습니다. 각 스레드는 운영 체제 관점에서 보면 하나의 프로세스로 인식됩니다. Linux에서 스레드 덤프를 만들려면 모든 프로세스의 시작 지점인 프로세스 ID를 찾습니다. 다음 명령을 사용하십시오. 
(Linux 중에서 ES, AS의 경우는 유닉스와 동일하게 남기시면 됩니다.)

루트 PID를 구하려면 다음과 같이 합니다. 
ps -efHl | grep 'java' **. ** 
(이런 방법이외에도 있었던 것 같은데 지금 기억이 나질 않아서...)

서버 시작 명령어(예를 들어 java … -DMYWLS81 weblogic.Server 라고 실행하였을 경우 ps -efHl | grep java | grep MYWLS81) 중 프로세스 스택에서 식별할 수 있는 문자열을 grep의 인수로 사용합니다. 
ps 명령이 다른 파이프를 거치지 않은 경우 첫 번째로 PID가 바로 루트 프로세스입니다. 


weblogic.Admin 명령 THREAD_DUMP를 사용합니다. 
THREAD_DUMP admin 명령을 사용하는 것입니다. 이 방법은 서버 인스턴스가 실행되는 OS에 관계없이 사용할 수 있습니다. 

java weblogic.Admin -url ManagedHost:8001 -username weblogic -password weblogic THREAD_DUMP (서버 인스턴스를 ping할 수 없으면 이 명령을 사용할 수 없습니다.)

사용 중인 JVM이 Sun 제품이면 스레드 덤프는 stdout으로 출력됩니다. 

Sun은 JVM 1.3.1, 1.4 버전부터 스레드 덤프 형식을 개선했습니다. Sun의 1.4 유형 스레드 덤프를 구하려면 1.3.1 JVM을 시작하기 위한 Java 명령줄에 다음 옵션을 추가하십시오. 

-XX:+JavaMonitorsInStackTrac