안녕하세요. "미들웨어" 입니다.
요즘 모니터링이 잘되있어서 jennifer 나 와탭, scouter 등 구성이 된곳이 많습니다.
하지만, 그런 구성으로도 쉽게 잡지 못하는 것이 있조.
그럴땐 쉘 스크립트로 원하는 구성을 파일로 생성되게 하면 이슈에 대비할 수 있습니다.
이번에 쉘 스크립트 공부를 의도하지 않게 하게 되었습니다.
미리 미리 좀 해둘껄.. 후회가 되지만, 아직 늦지않았다는 마음으로 입문교육처럼 공부를 하고 있습니다.
이번에 공유해드릴 내용은 아래 캐이스 입니다.
- Jstack 설치 확인
이걸 활용하려면 서버에 Jstack가 설치되있어야 합니다.
Jstack는 JDK를 설치하면 기본 포함되있어서 서버에서 jstack 실행해보시면 설치되있는지 확인 가능하실거예요.
혹 JDK 경로가 안잡혀 있는 경우가 있는데 그렬경우 JAVA_HOME을 설정되있나 확인해주세요.
bash_profile에 java_home 설정 확인해주시고 Jstack 실행해보세요.
| ## JAVA_HOME JAVA_HOME=/usr/java~~~~
export JAVA_HOME
JDK_HOME=$JAVA_HOME
export JDK_HOME
PATH=$JAVA_HOME/bin:${PATH}
export PATH
|
- 이슈 : 갑자기 아무런 이슈도 없이 CPU가 증가되는 CASE가 생성
- 분석 : 그래서 CPU가 어떤 Thread 에서 발생하는지 추척하기 위해서 Instance 에서 사용하는 CPU 값을 찾은뒤,
해당 process의 TID 값을 조회한뒤 Jstack DUMP 파일로 남겨서 문제가 되는 CPU를 찾는 스크립트를 생성했습니다.
1. 쉘 스크립트 내용
| # cpuhigh.sh # ex) cpuhigh.sh $PID # 예를들어 PID값이 1234면 ./cpuhifh.sh 1234 입력하시면 파일 2개가 생성됩니다. # (1.CPU_High.txt ,2.Jstack_Dump.txt) # Jstack Dump 파일을 분석하려면 TID 값이 16진수로 변환되야 합니다. 아래 명령어로 변환하셔도 되나, 스크립트로 자동변환 시켰습니다. # 16진수 -> 10진수 : echo "obase=16;$PID" | bc |
2. cpuhigh.sh 작성
cpuhigh.sh 실행으로 프로스세 puc를 내림차순으로 검색하여 파일(CPU_High.txt)로 떨구는 스크립트 입니다.
| # ex) cpuhigh.sh $PID ################################# #!/bin/bash -l PID=$1 # PID 값을 입력한다. echo -n "1. PID 입력값 : $PID" echo "" echo -n "2. PCPU 내림차순으로 파일생성 : CPU_High.txt" echo "" # tid 값은 16진수로 변경, pcpu는 내림차순으로 정렬 후 0.5 수치 이상만 출력 ps -eLo pid,ppid,tid,pcpu,comm -q $PID | awk '{if ($4 > 0.5) {printf "pcpu:"$4" pid:"$1" ppid:"$2" tid:%04x comm:"$5"\n", $3}}' | sort -n >> CPU_High.txt # PID값으로 Jstack Dump 생성 echo "-n "3. PID값으로 DUMP 파일 생성 : "Jstack_Dump.txt"" echo "" jstack $PID >> Jstack_Dump.txt echo "" exit |
위와 같이 스크립트를 작성해두면, 필요한 순간에 cpu가 높은 프로세스를 기록해 둘 수 있습니다.
그럼.. 열공하세요~
'Apache Tomcat' 카테고리의 다른 글
| (오픈소스 활용-17) 로컬 및 URL 호출 테스트 옵션 (curl, ab 옵션으로 부하주기) (0) | 2025.03.26 |
|---|---|
| (Monitoring) Jennifer & Slack 연동 구성방법 (이벤트 발생 확인) (0) | 2025.02.26 |
| Coherence란 무엇인가? (0) | 2025.02.05 |
| (Tuxedo-1) TP-monitor 란 무엇인가? (0) | 2025.01.06 |
| (weblogic 활용) Weblogic을 마켓에서 구매후 클릭으로 설치 -2 (2) | 2024.11.13 |