본문 바로가기

성능테스트/Scouter

[ Scouter ] scouter설치

반응형

AWS의 linux기반으로 EC2를 생성하여 Tomcat 및 Scouter를 설치하고, Application을 배포 후 로컬PC에서 Scouter client로 접속해서 사용해 보는 과정 및 Thread dump 및 Heap dump 분석해 보기

 

* AWS에 TOMCAT 및 Scouter 구성

1. AWS에 linux 설치

 - "Amazon Linux 2 AMI (HVM), SSD Volume Type" AMI로 프리웨어로 EC2를 구성하여 linux를 설치

2. JDK 설치

 - java-1.8.0-openjdk-devel.x86_64 설치

3. Tomcat 설치

 - tomcat8 설치

4. Application배포

5. Scouter Server설치

6. Scouter Server 설정

7. Scouter Client설치 및 실행

8. Scouter Java Agent 설정

9. 테스트 실행 및 Tuna Client에서 Xlog 확인

* Thread Dump 분석

1. Tomcat process id 확인

 - jps를 이용하여 tomcat process id 확인

2. Thread dump 생성

 - jstack을 이용하여 thread dump생성

3. Thread dump 분석하기

 - pastthread 사용하여 분석

 

* Heap Dump 분석

1. Tomcat process id 확인

 - jps를 이용하여 tomcat process id 확인

2. Heap dump 생성

 - jmap을 이용하여 heap dump생성

3. Heap dump 분석하기

 - MAT 사용하여 분석

 

* AWS에 TOMCAT 및 Scouter 구성

1. AWS에 linux설치

1.1 AWS Management Console에서 EC2 선택

 

1.2 좌측메뉴에서 인스턴스->인스턴스 선택

1.3 인스턴스 시작버튼 클릭

1.4 AMI는 프리티어인 "Amazon Linux 2 AMI (HVM), SSD Volume Type" 선택

1.5 인스턴스는 마찬가지로 무료인 t2.micro를 선택

 

1.6 인스턴스 세부 정보구성화면에서 Default로 두고 "다음 스토리지추가" 선택. 이렇게 되면 디폴트로 만들어지는 vpc에 ec2가 구성된다.

1.7. 스토리지도 Default로 하고 "다음 태그추가" 선택

1.8 Default로 "다음 보안그룹" 선택

1.9 보안그룹을 아래와 같이 설정

ssh : 22

ftp : 21

scouter : 6100

웹 : 80, 8080

1.10 인스턴스가 생성되면 이름을 편집한다.

2. JDK 설치

2.1 yum을 통해 JDK 설치

sudo yum -y install java-1.8.0-openjdk-devel.x86_64

2.2 java 정상설치 확인

java -version

3. Tomcat 설치

3.1 Linux 접속

AWS에 만들어진 linux의 퍼블릭 DNS를 확인후 SSH를 통해 접속한다. 기본 계정은 ec2-user이다. 

 

3.2 Tomcat 8버젼 Download

https://tomcat.apache.org 에 접속하여 download탭에서 tomcat 8버젼의 tar.gz의 다운로드링크를 복사한다. downloads폴더를 만들고 wget을 통해 tomcat8파일을 다운로드 한다.

https://downloads.apache.org/tomcat/tomcat-8/v8.5.59/bin/apache-tomcat-8.5.59.tar.gz

3.3 Tomcat 파일 압축풀기

계정을 root로 변경하고 설치하고자 하는 폴더에(/opt/tomcat) tomcat압축을 푼다.

sudo tar xvf apache-tomcat-8.5.59.tar.gz -C /opt/tomcat --strip-components=1

3.4 Tomcat 실행

cd /opt/tomcat/bin

./startup.sh

3.5 Tomcat 접속 테스트

외부PC에서 퍼블릭 도메인명을 통해 tomcat접속 확인

https://ec2-13-209-69-90.ap-northeast-2.compute.amazonaws.com:8080

4. Application배포

4.1 war파일 배포

war파일을 downloads폴더에 올린후 /opt/tomcat/webapps에 배포한다.

sudo cp ./LectureEvaluation.war /opt/tomcat/webapps

4.2 Application 화면 접속 확인

Application화면 접속을 확인한다.

5. Scouter설치

5.1 Scouter agent및 server 다운로드

https://github.com/scouter-project/scouter/releases/ 에 접속하여 최신파일인 scouter-all-2.10.0.tar.gz의 다운로드 링크주소를 복사한다. wget을 통해 downloads폴더에 다운로드 한다.

wget https://github.com/scouter-project/scouter/releases/download/v2.10.0/scouter-all-2.10.0.tar.gz

 

5.2 Scouter agent및 server 파일 압축풀기

Scouter파일 압축 풀기

sudo tar xvf scouter-all-2.10.0.tar.gz -C /opt/scouter --strip-components=1

5.3 Scouter agent및 server 정상설치 확인

/opt/scouter로 이동하여 agent.host, server폴더 등 확인

6. Scouter Server 설정

6.1 Scouter Server 설정파일 위치로 이동

/opt/scouter/server/conf 로 이동하여 scouter.conf 파일 확인

6.2 server.conf파일 편집

net_udp_listen_port=6100 # tcp listen port 설정
net_tcp_listen_port=6100 # udp listen port 설정
db_dir=/opt/scouter/database  # database 저장위치 설정
log_dir=/opt/scouter/logs # log 저장위치 설정

7. Scouter Host Agent 설정

7.1 agent.host 설정파일 위치로 이동

/opt/scouter/agent.host/conf폴더에서 scouter.conf파일 확인

7.2 agent.host 밑의 scouter.conf파일 편집

# net_collector_ip는 이 에이전트에서 수집한 데이터를 보낼 서버의 ip주소이다.

net_collector_ip=127.0.0.1 
# net_collector_udp_port는 에이전트와 서버간 udp 통신시 사용할 포트번호이다.

net_collector_udp_port=6100 
# net_collector_tcp_port는 에이전트와 서버간 tcp 통신시 사용할 포트번호이다.
net_collector_tcp_port=6100

8

8. Scouter Java Agent 설정

8.1 agent.java 설정파일 위치로 이동

/opt/scouter/agent.java/conf폴더에서 scouter.conf파일 확인

8.2 agent.java 밑의 scouter.conf파일 편집

net_collector_ip=127.0.0.1
net_collector_udp_port=6100
net_collector_tcp_port=6100
obj_name=MyTomcat

9. 테스트 실행 및 X로그 확인

아래의 과정으로 Scouter를 검증한다.


1. tomcat 실행
2. host agent 실행
3. server 실행
4. client 실행
5. jmeter로 부하 테스트

 

* tomcat client에서 default 'JavaEE'를 tomcat으로 하고 Reset Perspective를 해준다.

* Thread Dump 분석

 

1. Tomcat process id 확인

 - jps를 이용하여 tomcat process id 확인

jps -v 로 tomcat process id가 8781임을 확인

2. Thread dump 생성

 - jstack을 이용하여 thread dump생성

jstack은 $JAVA_HOME/bin 밑에 있으며 "jstack processid" > 파일명으로 생성한다.

3. Thread dump 분석하기

 - 온라인에서 pastthread 사용하여 분석

 

# Thread count summary 확인

# Thread Group 확인

# Stack Trace확인

# CPU를 많이 쓰는 Thread 확인

 

* Heap Dump 분석

1. Tomcat process id 확인

 - jps를 이용하여 tomcat process id 확인

jps -v 로 tomcat process id가 8781임을 확인

 

2. Heap dump 생성

 - jmap을 이용하여 heap dump생성

 

jmap은 $JAVA_HOME/bin 밑에 있으며 [jmap -dump:format=b,file="파일명" "processid"]으로 생성한다.

 

3. Heap dump 분석하기

 - MAT 사용하여 분석

Leak suspect는 가장 큰 용량을 차지하고 있는 객체들을 좀 더 세분된 파이 도표로 보여준다. Problem suspect 1을 보면 현재 이 스레드 객체의 크기가 전체 힙 메모리의 크기 중 21.45%를 점유하고 있다는 것을 알 수 있다. 상당부분을 차지하기 때문에 OOM의 범인으로 추정할 수 있고, 일정시간마다 Heap dump를 떠서 객체크기가 증가하는지 확인한다. 해당 객체에 대한 더 자세한 정보를 얻고 싶다면 Details을 클릭하면 된다.

반응형

'성능테스트 > Scouter' 카테고리의 다른 글