본문

테크
Realtime Java method performance without modifying

작성일 2021년 10월 14일

I. 작성 내용

Java Application 을 서비스하며 원본 소스의 수정없이 외부 결제 연동 결과, 중요 메서드 처리결과 등을 실시간으로 모니터링 하고자 할 때 유용한 방법을 기술하고 샘플링 합니다.

II. 필요사항

1. 사용하는 항목
  • WhaTap Java or Kubernetes Monitoring
  • WhaTap Java Application Agent
  • WhaTap Flex Board
  • Your Application or Sample Application
2. 개발할 항목
  • WhaTap Weaving

III. 샘플링한 결과 보기

1. 사용한 프로그램
  • Server.jar : 성능테스트를 전문적으로 하는 지인의 소켓 부하 테스트 용 샘플 소스
  • Jmeter : 위 지인에게 교육 받는 오픈소스 부하테스트 툴
  • weaving.test.server-0.1.jar : WhaTap Weaving
  • WhaTap Java Monitoring + Flex Board
2. 성능 측정 항목 설명 및 실시간 차팅

1) 측정 메서드

  • addClient : 새로운 사용자가 붙으면 Server에서 Thread 를 생성하고 addClient 를 통해 연결을 붙임
  • removeClient : 사용자가 접속을 끊으면 Thread 에서 removeClient 를 통해 연결을 끊음
  • message : Server와 Client는 Conn/Disconn/SendMsg/Ack/Nack 등을 주고 받으며, 이때 이 메서드를 호출해 GUI 창에 해당 메시지를 출력하게 됨.

2) 측정 성능 항목

  • 수행 카운트 : 해당 메서드의 수행 카운트 (5초 기간 내)
  • 합산 수행시간 : 해당 메서드의 수행시간 합산 (5초단위, ms)
  • 최대 수행시간 (1회) : 해당 메서드의 최대수행시간 (5초 기간 내)
  • Exception Catch 횟수 : Error 등도 잡기위해 Throwable 로 Catch 된 횟수 (5초 기간 내)

3) 수행화면

Server.jar + WhaTap Java Agent(Weaving) + Jmeter + WhaTap Flex Board
3. WhaTap Weaving 작성

1) 원본 소스 (Server.jar -> TestServer, Decompiler 로 파악)

Server.jar -> TestServer, Decompiler서

2) 성능 데이터 자료구조 작성

성능 데이터 자료구조 작성

3) 모니터링 대상 클래스/메서드를 Weaving 하기위한 클래스 작성

모니터링 대상 클래스/메서드를 Weaving 하기위한 클래스 작성

4) Weaving 클래스 컴파일을 위한 더미클래스 작성

Weaving 클래스 컴파일을 위한 더미클래스 작성

5) 성능 데이터 전달을 위한 WhaTap Weaving Agent 클래스 작성

성능 데이터 전달을 위한 WhaTap Weaving Agent 클래스 작성

6) 빌드

ㄱ. Ant빌드 (빌드는 맘대로 해도 됨. 단, MANIFEST.MF 에 항목 체크 필요)

빌드
빌드

ㄴ. MANIFEST.MF (아래 항목이 들어가야 함)

빌드
4. WhaTap Agent 적용 및 기동
빌드
  • javaagent 에 WhaTap Java Agent 를 걸어서 기동
  • WhaTap Java Agent Home 디렉토리에 instrument 디렉토리 생성 후 빌드된 Weaving jar 파일 업로드
  • Java Application 기동

# WhaTap 모니터링 에이전트 설치는 '프로젝트 -> 관리 -> 에이전트 설치' 참조

서비스 성능관리는 와탭 애플리케이션 모니터링으로!
와탭 무료로 시작하기
박명규[email protected]
Solution ConsultingTeam Leader

지금 바로
와탭을 경험해 보세요.