공유할 서비스 선택

TECH


TECH

Middleware (오픈소스 활용-16) Jstack을 활용하여 CPU급등한 프로세스 파일로 떨구기

페이지 정보

작성자 미들웨어 아이디로 검색 전체게시물 댓글 0건 조회 1,338회 좋아요 0회 작성일 23-03-20 09:59

본문

안녕하세요. "미들웨어" 입니다.

 

요즘 모니터링이 잘되있어서 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가 높은 프로세스를 기록해 둘 수 있습니다.

그럼.. 열공하세요~

 

댓글목록

등록된 댓글이 없습니다.

TECH 목록
번호 제목 작성자 작성일 조회수
113 Middleware 미들웨어 아이디로 검색 전체게시물 08-19 901
(IMDG)를 활용한 session 구성 -2 오픈소스 (Hazelcast, Apache Ignite) 설치방법

카테고리 : Middleware

901 0
작성자 : 미들웨어 24/08/19
112 Middleware 미들웨어 아이디로 검색 전체게시물 08-09 806
(IMDG) Data Grid란? (IMDG)를 활용한 session 구성 -1

카테고리 : Middleware

806 0
작성자 : 미들웨어 24/08/09
111 Middleware 미들웨어 아이디로 검색 전체게시물 07-22 822
(오픈소스 활용-33) "ISTIO 이스티오" 쿠버네티스 서비스 시각화 구현에 필요한 데모설치

카테고리 : Middleware

822 0
작성자 : 미들웨어 24/07/22
110 Middleware 미들웨어 아이디로 검색 전체게시물 07-10 1262
(Apache) mod_wl.so 에서 sticky session 사용방법 정리

카테고리 : Middleware

1,262 0
작성자 : 미들웨어 24/07/10
109 Middleware 미들웨어 아이디로 검색 전체게시물 06-24 1055
(오픈소스 활용-32) Apache Kafka 란? 다운로드 및 샘플 소개

카테고리 : Middleware

1,055 0
작성자 : 미들웨어 24/06/24
108 Middleware 미들웨어 아이디로 검색 전체게시물 06-07 1021
(Apache) Apache & Webtier에서 Nginx와 동일한 비동기 방식 처리 하기 (MPM-event)

카테고리 : Middleware

1,021 0
작성자 : 미들웨어 24/06/07
107 Middleware 미들웨어 아이디로 검색 전체게시물 05-21 1288
(오픈소스 활용-31) (부하테스트 Tool) Jmeter 를 활용한 JDBC 부하테스트 방법 -2

카테고리 : Middleware

1,288 0
작성자 : 미들웨어 24/05/21
106 Middleware 미들웨어 아이디로 검색 전체게시물 05-07 2401
(오픈소스 활용-30) (부하테스트 Tool) Jmeter 를 활용한 JDBC 부하테스트 방법 -1

카테고리 : Middleware

2,401 0
작성자 : 미들웨어 24/05/07
105 Middleware 미들웨어 아이디로 검색 전체게시물 04-22 1250
(오픈소스 활용-29) was에서 T4CConnection (Locked) 발생시 해결방법

카테고리 : Middleware

1,250 0
작성자 : 미들웨어 24/04/22
104 Middleware 미들웨어 아이디로 검색 전체게시물 04-08 1206
(오픈소스 활용-28) Java Flight Recorder 이란? Java 모니터링을 구현가능

카테고리 : Middleware

1,206 0
작성자 : 미들웨어 24/04/08
Total 113건
게시물 검색

주식회사 클럭스| 대표 : 이찬호| 사업자등록번호 : 107-87-27655
주소 : 서울특별시 영등포구 국회대로 800, 여의도파라곤
E-mail : sales@chlux.co.kr
Copyright © 클럭스 www.chlux.co.kr All rights reserved.
상단으로Top