YourKit을 이용한 원격 Java 프로파일링
이 문서는 YourKit이라는 Java 프로파일링 도구의 작동 방식, JVM 애플리케이션 프로파일링에 도움이 되는 기능, 사용자가 YourKit 프로파일러 UI를 성능 환경의 프로파일러 에이전트(원격 애플리케이션)에 연결하는 방법을 설명합니다.
참고: YourKit은 무료/오픈 소스 소프트웨어가 아니며 사용하려면 라이선스가 필요합니다. YourKit은 Bahmni 팀의 성능 프로파일링을 위해 무료 라이선스를 제공해 왔습니다. YourKit을 시험하려면 오픈 소스 프로젝트에 적합한 라이선스를 받을 수 있도록 해당 회사에 문의하십시오. 자세한 내용: https://www.yourkit.com/java/profiler/purchase/#os_license
YourKit이란?
YourKit은 개발 및 운영 환경에서 성능 문제를 모니터링하고 디버깅하는 JVM 프로파일러입니다. 애플리케이션을 디버깅하고 메모리 누수를 찾는 데 유용합니다. CPU 및 메모리 프로파일링, 교착 상태 감지, 실행 스레드 등의 기능을 제공하며 이후 절에서 설명합니다.
YourKit의 작동 방식

YourKit Java Profiler는 네트워크를 통해 상호 작용하는 프로파일러 에이전트와 프로파일러 UI의 두 부분으로 구성됩니다.
프로파일러 에이전트(에이전트)는 Java Virtual Machine용 플러그인입니다. 프로파일러 UI(UI)는 에이전트에 연결하여 프로파일링 모드를 변경하고 실시간 성능 데이터를 얻는 데스크톱 애플리케이션입니다. 프로파일러 UI는 나중에 오프라인으로 분석할 수 있도록 성능 데이터를 스냅숏으로 저장할 수도 있습니다.
YourKit Java 프로파일러의 기능
CPU 및 메모리 프로파일링
YourKit 프로파일러를 사용하면 CPU와 메모리를 프로파일링하여 호출되는 메서드 및 호출 순서를 호출 트리로 확인하고, 메모리에 할당된 객체, 힙 및 비힙 메모리, 가비지 컬렉션 등의 정보를 파악할 수 있습니다.
메서드 호출과 호출 구조 및 관련 클래스/객체별 메모리 사용량의 상세 정보를 얻으려면 도구 모음에서 프로파일링을 활성화해야 합니다. 결과는 나중에 참조할 스냅숏으로 저장할 수 있습니다.
CPU 프로파일링 방법, YourKit이 제공하는 여러 프로파일링 유형 및 스냅숏 생성 방법은 관련 문서를 참조하십시오.
메모리 프로파일링 방법, 다양한 메모리 할당 기록 유형 및 스냅숏 생성 방법도 관련 문서를 참조하십시오.

교착 상태 감지
이 프로파일러는 프로파일링 중인 애플리케이션의 모든 Java 수준 교착 상태를 Deadlocks 탭에 표시합니다. 자세한 내용은 교착 상태 감지 문서를 참조하십시오.

성능 차트
이 창에서는 왼쪽에서 선택한 여러 원격 측정값을 시간축이 동기화된 하나의 창에서 비교할 수 있습니다. CPU, 메모리 등의 여러 창을 전환하지 않고 쉽게 비교할 수 있습니다. 자세한 내용은 성능 차트 문서를 참조하십시오.

예외 프로파일링
대시보드의 Exceptions 탭에는 애플리케이션에서 발생한 예외 목록이 표시됩니다. 위쪽 창에는 클래스 또는 스레드별로 그룹화한 예외 정보가 표시되고 아래쪽 창에는 예외 스택 추적이 표시됩니다.

다음 절에서는 성능 환경에서 실행되는 Bahmni OpenMRS 파드의 프로파일러 에이전트에 프로파일러 UI를 연결하는 방법을 살펴봅니다.
YourKit 프로파일러 UI를 성능 환경의 에이전트에 연결
프로파일러 UI에서 performance 네임스페이스의 OpenMRS 파드에 있는 YourKit 프로파일러 에이전트로 연결하려면 다음 단계를 따릅니다.
- YourKit 프로파일러 UI에서 Profile remote Java server or application을 선택합니다. Direct connect를 선택하고 다음 단계로 진행합니다. 연결에 고유한 Connection name을 입력합니다. 연결에 성공하면 이 이름이 Monitor applications 영역에 표시됩니다. Host에는 프로파일러 UI가 에이전트에 연결할 때 사용하는 경로인 profiling.lite.mybahmni.in을 입력합니다. Port를 443으로 설정하고 다음 단계로 진행합니다.



이 연결에는 SSH 터널이 필요하지 않으므로 Next를 누릅니다.
연결을 테스트하여 정상인지 확인한 후 Finish를 눌러 절차를 완료합니다.

Monitor applications 영역에 3a 단계에서 설정한 Connection name의 새 항목이 표시되고 그 아래에 Tomcat 서버가 표시됩니다.

Tomcat 서버를 선택하면 원격 애플리케이션에 연결되고 새 창이 열립니다. 이 창에는 JVM의 CPU 및 메모리 원격 측정값, 애플리케이션의 잠재적 교착 상태, 실행 스레드 정보, 실행 모니터링 옵션, 나중에 분석할 CPU 및 리소스 할당 스냅숏 생성 옵션이 표시됩니다.
성능 환경에서는 다음 Dockerfile로 생성한 profiling 태그의 Openmrs 이미지를 사용합니다. 이 Dockerfile은 bahminindiadistro/openmrs:latest 이미지를 사용하고 YourKit 에이전트를 추가하여 YourKit UI가 3b 단계의 연결을 수행할 수 있게 합니다.
참고 자료
- YourKit 문서
- YourKit Profiler 아키텍처
- YourKit Profiler UI 다운로드
Bahmni Wiki · CC BY-SA 4.0