Spring Boot · 2026-03-12

Spring Boot 성능 분석: JProfiler와 YourKit 사용법

Spring Boot 애플리케이션의 CPU·메모리 병목과 스레드 이슈를 JProfiler와 YourKit으로 진단하고, 프로파일링 설정부터 결과 해석까지 정리한 실무용 모음

작성일 : 2026-03-12 ㆍ 작성자 : 관리자
post
목차

개요

Spring Boot로 만든 서비스의 성능 문제는 사용자 경험과 운영 비용에 직접적 영향을 준다. 이 글은 spring boot profiler 사용법을 중심으로 JProfiler와 YourKit을 이용해 문제를 찾아내는 절차를 정리한다. 처음 접하는 개발자도 이해할 수 있도록 설치·연결·분석·스냅샷 해석 순으로 설명한다.

도구 선택 기준

JProfiler vs YourKit 비교

  • JProfiler: 직관적인 UI와 풍부한 메모리·CPU 뷰, 원격 프로파일링에 강점
  • YourKit: 낮은 오버헤드와 세밀한 메서드 호출 분석, CI 스냅샷 비교 용이
  • 둘 다 Spring 생태계와 호환되며, jprofiler spring boot 성능분석와 yourkit spring boot 분석이 가능

설치와 기본 설정

JProfiler 설치와 JVM 옵션

로컬에서 테스트할 때는 JProfiler 설치 후 애플리케이션 시작 시 에이전트 옵션을 추가한다. 예시:

java -agentpath:/opt/jprofiler/bin/linux-x64/libjprofilerti.so=port=8849 -jar app.jar

원격 서버에는 방화벽으로 포트(예: 8849)를 열어야 하고, 보안상 SSH 터널링을 권장한다.

YourKit 설치와 JVM 옵션

YourKit은 에이전트 기반으로 동작하며 옵션 예시는 다음과 같다.

java -agentpath:/opt/yourkit/bin/linux-x86-64/libyjpagent.so=port=10001,disablealloc,config=onexit=snapshot -jar app.jar

옵션은 환경에 따라 조절한다. disablealloc는 할당 트래킹을 끄는 예시이며, 필요 시 활성화해서 메모리 할당을 상세 분석한다.

Spring Boot와 연결하기

프로파일러로 접속하는 절차

  • 프로파일러 앱에서 Remote 또는 Attach 메뉴 선택
  • 목표 JVM을 목록에서 선택하거나 직접 호스트:포트로 연결
  • 연결 후 CPU 프로파일링 방식(샘플링 또는 계측)을 선택

샘플링은 오버헤드가 낮아 운영 중 진단에 적합하다. 계측(instrumentation)은 메서드 상세 호출 정보를 제공하나 오버헤드가 크다.

분석 흐름

CPU 병목 분석

  • Hotspots(핫스팟) 보기로 상위 소비 메서드 확인
  • 콜 트리(Call Tree)로 호출 경로 추적
  • 샘플링 결과가 불명확하면 특정 요청에 대해 계측 프로파일링 실행

Spring MVC, WebFlux 같은 프레임워크 계층에서 반복 호출이나 비효율적인 직렬 처리 패턴을 흔히 발견한다.

메모리 누수와 할당 분석

  • Heap Walker 또는 Memory view에서 객체 유형별 사용량 확인
  • 객체 할당 스택을 추적해 누수 지점을 찾음
  • 수집된 스냅샷을 비교해 증가 패턴 확인

예를 들어, 캐시가 의도치 않게 무한히 증가하거나 세션 보관 객체가 정리되지 않는 경우가 대표적이다.

스레드 문제 진단

  • Thread view로 블로킹 상태와 대기 스택 확인
  • Deadlock 탐지 기능으로 교착 상태 유무 조사
  • 스레드 덤프를 스냅샷과 함께 수집해 시간 경과에 따른 변화 관찰

실무 노하우

프로파일링 정책

  • 운영 환경은 샘플링으로 영향 최소화
  • 문제 재현 테스트환경에서 계측을 사용해 상세 원인 파악
  • 스냅샷은 이슈 발생 직후와 사후를 모두 저장해 비교

스냅샷과 보고

스냅샷은 타임스탬프와 함께 저장한다. YourKit과 JProfiler 모두 스냅샷을 파일로 내보내 비교 분석이 가능하다. 스냅샷 비교를 통해 신규 메모리 증가 또는 호출 비용 변화를 한눈에 파악할 수 있다.

예제: Spring Boot 실행 시 JProfiler 연결

# Linux 예시
$ java -agentpath:/opt/jprofiler/bin/linux-x64/libjprofilerti.so=port=8849 -Xms512m -Xmx2g -jar myapp.jar

로컬에서 JProfiler GUI를 열고 포트 8849로 연결하면 애플리케이션 프로파일링이 시작된다.

결과 해석의 핵심 포인트

  • 핫스팟 상위 10개 메서드를 우선 조사
  • 할당량이 큰 객체 유형을 식별해 GC 부담과 연관성 확인
  • 스레드 블로킹의 원인을 I/O, 락, 외부 호출로 분류

마무리

jprofiler spring boot 성능분석과 yourkit spring boot 분석은 서로 보완적이다. 운영 환경에서는 샘플링 위주로, 재현 환경에서는 계측과 스냅샷 비교를 활용하면 문제를 효과적으로 찾을 수 있다. 도구의 기본 사용법을 숙지하면 반복되는 성능 문제를 체계적으로 줄일 수 있다.

spring boot profiler 사용법 jprofiler spring boot 성능분석 yourkit spring boot 분석 Spring Boot 성능 Java 프로파일링 JProfiler YourKit 애플리케이션 최적화