thread dump를 남기는 방법은 두가지가 있다.
kill -3 or jstack command를 사용할 수 있는데,
kill -3 은 stdout 파일 예를들면 catalina.out 파일에 dump를 남기고
jstack의 경우에는 console 화면에 보여진다.
console 보여진다는 의미는 jstack $PID 를 실행하였을 시에 모니터 화면에 바로 볼 수있다.
thread dump 를 생성하는 방법은 동일하지만, 로그 내용을 쓰는데는 방식이 다르다.
catalina.out을 통해서 보는것도 좋지만, vi에서 화면을 오르랄 내리락 해야하기 때문에 jstack을 통해서 thread dump 내용을 파일로 리다이렉션 하는 것이 좀더 편해 보인다.
jstack으로 thread dump를 생성하는 것을 bash scripts 로 만들었다.
#!/bin/bash
export CATALINA_BASE=$(dirname $(dirname $(realpath $0)))
. $CATALINA_BASE/bin/env.sh > /dev/null
DATE=`date +%Y-%m-%d`
# 2초에 한번씩 총 5번 thread dump를 생성
for count in 1 2 3 4 5; do
echo "# Thread Dump : $count"
for i in `ps -ef | grep java | grep "$SERVER_NAME " | awk '{print $2}'`;do
echo "# PID [$i] jstack is running "
$JAVA_HOME/bin/jstack -l $i > $LOG_DIR/threaddump.$DATE
echo "# sleep 2 sec"
sleep 2;
done
echo "done"
sleep 3
done
echo ""
# thread dump 로그파일을 남김
echo "# Dumpfile is $LOG_DIR/threaddump.$DATE"
echo ""
댓글 없음:
댓글 쓰기