시스템의 성능이 느릴 때 가장 먼저 병목 지점을 파악해야 한다. 그러기 위해서 사용해야 하는 것이 툴이다. 책에서 언급된 자바 환경을 위한 툴은 프로파일링, APM이 대표적이라고 한다.
프로파일링 툴
프로파일링 툴은 이해하기 편하게 말하면 성능측정 도구라고 할 수 있다. 운영 서버를 진단 및 모니터링하기 위해서 사용한다. 많이 사용하는 툴로는 APM(Application Performance Monitoring)이 있다. 국산 APM에는 미소 정보사의 WebTune, 케이와이즈사의 Pharos, 외국산은 CA Wily의 Introscope, Compuware의 dynaTrace 등이 있다.
| 구분 | 특징 |
| 프로파일링 툴 | - 소스 레벨의 분석을 위한 툴 - 애플리케이션의 세부 응답 시간까지 분석 가능 - 메모리 사용량을 객체나 클래스, 소스의 라인 단위까지 분석 가능 - 가격이 APM 툴에 비해 저렴 - 보통 사용자수 기반으로 가격이 책정 - 자바 기반의 클라이언트 프로그램 분석 가능 |
| APM 툴 | - 애플리케이션의 장애 상황에 대한 모니터링 및 문제점 진단이 주 목적 - 서버의 사용자 수나 리소스에 대한 모니터링 가능 - 실시간 모니터링을 위한 툴 - 가격이 프로파일링 툴에 비해 비쌈 - 보통 CPU 수를 기반으로 가격 책정 - 자바 기반의 클라이언트 프로그램 분석 불가능 |
프로파일링 툴은 대부분 느린 메서드, 느린 클래스를 찾는 것을 목적으로 한다. APM 툴은 시스템 모니터링 및 운영에 초점이 맞춰져 있다. 그래서 소스 레벨을 분석할지 시스템 레벨에서 분석할지 정해야 한다. 솔직히 둘 모두 사용하는 것이 좋지만, 비용이 발생하기에 두 마리 토끼를 잡기는 쉽지 않은 선택일 것이라 생각한다.
프로파일링 툴 기능
응답 시간 프로파일링 기능
응답 시간 프로파일링은 응답 시간을 측정하기 위함이다. 하나의 클래스 내에서 사용되는 메서드의 단위의 응답 시간을 측정한다. 툴에 따라서 소스라인 단위로 응답 속도를 측정할 수도 있다. 응답 시간 프로파일링을 할 땐 보통 CPU 시간과 대기 시간 두 가지 시간을 제공한다.
메모리 프로파일링
메모리 프로파일링은 잠깐 사용하고 GC의 대상이 되는 부분을 찾거나, 메모리 부족 현상이 발생하는 부분을 찾기 위함이다. 클래스 및 메서드 단위의 메모리 사용량을 분석한다.
CPU 시간과 대기 시간.
한 라인을 수행하는데 소요되는 시간은 무조건 CPU 시간과 대기 시간으로 나뉜다. CPU 시간은 CPU를 점유한 시간을 의미하고, 대기 시간은 CPU를 점유하지 않고 대기하는 시간을 의미한다. 따라서 CPU 시간과 대기 시간을 더하면 실제 소요 시간이 된다.
생각
프로파일링 툴을 이용하려면 사용법을 제대로 터득해서 알맞게 사용해야 한다. 현업에서 분석해서 찾기 제일 어려운 것이 메모리 부족현상이다. 어느 메서드에서 메모리 누수가 발생하는지 파악하는 것도 공부해야 하는 요소다. 앞전에 작성했던 글 중 메모리 누수 파악을 위해 적었던 글이 있다. 아직 제대로 공부하지 못 해서 제대로 정리하지 못했지만, 개발에 대해 차근차근 공부하면서 정리해 나갈 예정이다.
'Programming' 카테고리의 다른 글
| [자바성능튜닝]1. J2EE 디자인 패턴 (0) | 2025.07.27 |
|---|---|
| OIDC 이해와 구현 - 1 (0) | 2025.07.02 |
| 결제 API (0) | 2024.03.05 |