본문 바로가기

IT 관련/javascript & jquery

[java] APM 프로파일링 툴

프로그램을 만들고 성능이 느리다고 할 때 가장 먼저 해야 하는 작업은 병목 지점을 파악하는 것입니다.

자바 기반의 시스템에 대하여 응답 속도나 각종 데이터를 측정하는 프로그램은 많이 있습니다. 애플리케이션의 속도에 문제가 있을 때 분석하기 위한 툴로는 프로파일링 툴이나 APM 툴 등이 있습니다.

이 툴을 사용하면 병목 지점을 쉽게 파악할 수 있습니다. 하지만 대부분의 프로젝트나 운영 사이트에서 예산상의 이유로 사용하지 않습니다. 안타까운 현실입니다.

 

프로젝트에서는 프로파일링 툴을 사용하여 튜닝을 진행합니다. 물론 APM 툴도 사용합니다. APM 툴을 프로파일링 툴과 비교하면 프로파일링 툴은 개발자용 툴이고 APM 툴은 운영 환경용 툴이라고 할 수 있습니다. 각각의 장단점이 있기 때문에 뭐가 더 낫다고 말하기는 쉽지 않습니다. 혼동이 될 것 같아 간단하게 비교해보겠습니다.

구분 특징
프로파일링 툴 애플리케이션의 세부 응답 시간까지 분석 할 수 있다.
가격이 APM 툴에 비해서 저렴하다.
메모리 사용량을 객체나 클래스, 소스의 라인 단위까지 분석할 수 있다.
보통 사용자수 기반으로 가격이 정해진다.
소스 레벨의 분석을 위한 툴이다.
자바 기반의 클라이언트 프로그램 분석을 할 수 있다.
APM 툴 서버의 사용자 수나 리소스에 대한 모니터링을 할 수 있다.
애플리케이션의 장애 상황에 대한 모니터링 및 문제점 진단이 주 목적이다.
실시간 모니터링을 위한 툴이다.
가격이 프로파일링 툴에 비하여 비싸다.
보통 cpu 수를 기반으로 가격이 정해진다.
자바 기반의 클라이언트 프로그램 분석이 불가능하다.

 

참고로 APM 툴은 벤더에 따라서 주장하는 APM 툴의 종류가 서로 다릅니다. 프로파일링 툴은 대부분 목적이 동일합니다. 느린 메소드, 느린 클래스를 찾는 것이 목적입니다. 하지만 APM 툴은 목적에 따라서 다르게 보아야 합니다. 어떤 APM 툴은 문제점 진단에 강한 한편, 다른 APM 툴은 시스템 모니터링 및 운영에 강합니다. 어떤 목적으로 사용할 것인가를 잘 생각해서 결정해야 합니다.

 

자바 기반의 애플리케이션을 분석하는 프로파일링 툴은 상용과 비상용으로 나뉩니다.

대표적인 상용 툴로는 컴퓨퉤어의 DevPartner fo Java와 퀘스트 소프트웨어의 JProbe가 있다.

 

비상용 툴은 굉장이 많은데 대표적인 비상용 툴은 대부분 개발 툴과 연계해서 사용하도록 되어 있습니다. 넷빈즈에서 사용하는 프로파일러가 있고, 이클립스에서 사용하는 TPTP도 있습니다. 이 TPTP 툴의 범위는 굉장히 넓어서 프로파일링에 대한 내용만 공부하려 해도 양이 좀 많습니다.

 

그럼 프로파일링 툴이 기본적으로 제공하는 기능은 어떤 것이 있을까요? 각 툴이 제공하는 기능은 다양하고 상이하지만, 크게 응답 시간 프로파일링과 메모리 프로파일링 기능을 기본적으로 제공합니다.

 

한 가지 알아두어야 할 점은 APM 툴이건 프로파일링 툴이건 자동으로 되는 툴은 없다는 것입니다. 간혹 툴만 사면 모든 것이 자동으로 해결된다고 생각하는 사람들이 있는데, 잘못된 생각이라는 것입니다. 일단 툴에서 분석을 하려면 해당 메서드가 수행이 되어야 합니다.

 

수행되지 않은 메서드는 분석 자체가 되지 않습니다. 문제가 되는 메서드가 수행되어야 하므로 메모리 부족 현상이 가장 분석하고 찾아내기 어렵습니다.

 

이것으로 간단하게 프로파일링 툴에 대해서 알아보았습니다.

각자의 상황에 맞는 프로파일링 툴을 잘 선택하시기 바랍니다.

 

그럼 이만.

끝.