1. Java Profiler
- 등장 배경
- 프로그램 규모가 커지거나 복잡해지면 모든 JVM Internal Components가 효율적인지 모니터링 어려움
- 특징
- Memory Usage, Garbage Collection, CPU Utilization 등을 분석
- JVMTI 이용
- 주로 Agent - Server - UI 구조
2. Java Profiling Tools
APM (Application Performance Management)
Pinpoint | Scouter | VisualVm | |
형태 | Web Client | Standalone Client | Standalone Client Plugins |
저장소 | HBase | compressed files | |
Agent | Java Agent | • Host Agent (OS Agent) - CPU, Memory, Disk • Java Agent - Heap, Thread, Service |
JMX Agent |
Overview Map |
Server Map | Object Map | X |
Heap Dump | 불가능 | 가능 | 가능 |
Thread Dump | 가능 | 가능 | 가능 |
2-1. Pinpoint
2-1-1. 개요
- 제공 기관 : Naver
- 제공 형태 : Web Client
- Support OS : Linux
- Support Language : Java, PHP, Python
2-1-2. Architecture
- Pinpoint Agent : JVM에서 Application의 profile data를 수집하는 agnet
- Pinpoint Collector : 모니터링 결과를 처리하는 server
- Pinpoint Web : 모니터링 결과를 가시적으로 제공하는 UI
- HBase Storage : 모니터링 데이터 저장하는 DB
2-1-3. 기능
① Server Map
- Application Server를 둘러싼 relationship 나타냄
- 각 Component를 Node처럼 표현
② Call Stack
- 각 Transaction마다 code level로 모니터링 가능
- bottleneck, failure 원인 분석 가능
③ Inspector
- Heap / Non-heap Memory Usage
- CPU Usage
2-1-4. Pinpoint 특징
- 분산 트랜잭션 추적 기법
- 분산된 요청을 하나의 트랜잭션으로 처리
- Span, Trace, TraceId 이용 (메세지간의 관계 파악)
Span - RPC(Remote Procedure Call) 추적을 위한 기본 단위
- RPC 도착 시 처리한 작업의 목록
- 각 Span은 TraceId 가짐Trace - 연관된 Span의 집합
- 동일한 집합에 소속된 Span들은 TransactionId (=TxId) 동일TraceId - TransactionId, SpanId, ParentId 키의 집합
- HBase를 이용하여 수집한 데이터 저장할 때 상수 테이블 활용
- 반복해서 수집되는 메서드는 아이디 - 메서드 정보 형태로 상수 테이블에 저장
- 다시 조회할 경우, 해당 테이블에서 정보 찾아서 재조합 (cache 역할)
2-2. Scouter
2-2-1. 개요
- 제공 기관 : LG CNS
- 제공 형태 : Standalone, Web API Dashboard (Scouter Paper)
- Support OS : Windows, Linux, Unix
- Support Language : Java
2-2-2. Architecture
- Host Agent : CPU, Memory, Disk 관련 정보 수집
- Java Agent : Heap, Thread 관련 정보 수집
- Collector (Server) : Agent가 보낸 데이터 처리
- Viewer (Client) : 결과 모니터링을 위한 UI
2-2-3. 기능
① User Monitoring
- Recent User : 각 인스턴스 별 최근 5분간 방문한 Unique User
- Concurrent User 측정이 어려워서 대체용으로 설정한 개념
- 'Concurrent' 측정 과정에 Response Time이 포함되기 때문에 측정 어려움
ex) 장애 발생 시점에 Concurrent User 500명
[case 1] 장애 발생이 원인 → Concurrent User 500명이 결과
[case 2] Concurrent User 500명이 원인 → 장애 발생
② Services Monitoring
- TPS (Transaction per Second)
- XLog Chart (Response Time of Transaction)
③ Resources Monitoring
- CPU Usage
- Heap Used
2-2-4. 특징
- 수집 데이터 타입에 따라 다른 Agent 사용
- Host Agent - OS 관련 데이터 (CPU, Memory, Disk)
- Java Agent - Tomcat 관련 데이터 (Heap, Thread, Service)
- 다양한 Configuration Options 제공
2-3. VisualVM
2-3-1. 개요
- 제공 기관 : Oracle
- 제공 형태 : Standalone, IDE Plugin
- Support OS : Windows, Linux, macOS
- Support Language : Java
2-3-2. Architecture
- Agent : JMX Agent
- Java Management Extensions
- Remote Host를 모니터링할 때 사용됨
- Protocol : RMI
- Remote Method Invocation
- VisualVM - MBean Server 통신에 관여
2-3-3. 기능
① Monitor (CPU Usage, Heap, Metaspace, Classes)
② Threads (All, Live, Daemon, Finished Threads)
③ Sampler (CPU, Memory)
④ Profiler (CPU, Memory)
2-3-4. 특징
- JMX Agent (Java Management Extensions) 이용
- jdk 8까지는 jdk에 빌트인 되어있음
'인턴일지 > 슈어소프트테크' 카테고리의 다른 글
[인턴일지 #7] 인턴 끝! (0) | 2024.01.01 |
---|---|
[인턴일지 #6] Java GC, Heap Dump (0) | 2023.10.28 |
[인턴일지 #4] JVM, JVMTI (0) | 2023.10.04 |
[인턴일지 #3] 자사 도구 분석 (0) | 2023.09.19 |
[인턴일지 #2] 프로젝트 정리 (0) | 2023.09.19 |