JProfiler 도움말

시작 시 프로파일링 설정 지정

프로파일링 에이전트가 녹화를 시작하려면 먼저 프로파일링 설정이 지정되어야 합니다. 이는 JProfiler UI와 연결할 때 이루어집니다. 경우에 따라 프로파일링 에이전트가 시작 시에 프로파일링 설정을 알고 있어야 하는 경우가 있습니다. 주요 사용 사례는 다음과 같습니다:

  • 오프라인 프로파일링
    트리거 또는 API를 사용하여 데이터를 녹화하고 스냅샷을 저장합니다. JProfiler GUI는 이 모드에서 연결할 수 없습니다. 자세한 내용은 오프라인 프로파일링에 관한 도움말 항목을 참조하십시오.
  • 헤드리스 머신에서 jpcontroller를 사용한 프로파일링
    대화형 방식 또는 비대화형 명령 파일을 사용하여 데이터를 녹화하고 스냅샷을 저장하기 위해 JProfiler GUI 대신 명령줄 유틸리티 jpcontroller를 사용할 수 있습니다. 그러나 jpcontroller에는 프로파일링 설정을 구성하는 기능이 없으므로 미리 지정해야 합니다.
  • 구버전 OpenJ9 및 IBM JVM에 원격 attach
    8u281, 11.0.11 및 Java 17 이전의 구버전 OpenJ9 및 IBM JVM은 프로파일된 프로세스의 안정성을 저해하지 않고 클래스를 재정의할 수 있는 기능이 없으므로, 시작 시 프로파일링 설정을 지정해야 합니다. JProfiler의 원격 통합 마법사의 "Profiled JVM" 단계에서 JVM 유형을 묻는데, 여기서 Older OpenJ9 or IBM JVM을 선택하면 마법사가 아래에서 설명하는 옵션을 추가합니다.

일반적으로 시작 시 프로파일링 설정을 지정하는 것은 수행해야 하는 클래스 재정의 횟수가 가장 적기 때문에 가장 효율적인 작동 모드입니다. 편의성이 약간 떨어지는 점이 문제가 되지 않는다면 어떤 유형의 프로파일링 세션에도 사용할 수 있습니다.

시작 시 프로파일링 설정 지정

통합 마법사를 사용하는 경우 "Local or Remote" 단계에서 On a remote computer 옵션을 선택한 다음 "Config synchronization" 단계에서 Apply configuration at startup 옵션을 선택하십시오. 그러면 마법사가 다음 단락에서 설명하는 것과 동일한 옵션을 추가합니다.

프로파일링 에이전트를 로드하기 위해 시작 스크립트에 -agentpath VM 매개변수를 추가한 경우, 다음과 같이

,config=<path to config file>,id=<session ID>

를 -agentpath 매개변수에 추가하여 프로파일링 설정을 지정할 수 있습니다. 전체 매개변수는 다음과 같습니다:

-agentpath:/path/to/libjprofilerti.so=port=8849,nowait,config=/path/to/config,id=123

프로세스가 시작된 후 프로파일링 에이전트를 로드하기 위해 jpenable을 사용하는 경우, 대화형 실행에서 offline mode를 선택하고 거기서 config와 ID를 지정할 수 있습니다. 또는 비대화형 실행을 위해 --offline, --config, --id 인수를 전달할 수 있습니다.

config 파일 없는 인라인 설정

오프라인 프로파일링의 경우 가장 일반적인 세션 설정만 필요하다면 config 파일이 필요하지 않습니다. 대신 -agentpath 매개변수에 인라인 옵션을 직접 추가할 수 있습니다. 이는 컨트롤러 API, MBean 인터페이스 또는 jpcontroller로 녹화를 제어할 때 유용합니다.

-agentpath:/path/to/libjprofilerti.so=offline,callTreeMode=sampling,profile=com.mycorp.:org.example.

jpenable로 attach할 때도 동일한 옵션을 제공할 수 있습니다:

jpenable --offline --call-tree-mode=sampling --profile=com.mycorp.:org.example.

다음과 같은 인라인 세션 설정을 사용할 수 있습니다:

  • 호출 트리 수집
    callTreeMode=sampling|instrumentation|async는 호출 트리 수집 모드를 선택합니다. instrumentation의 경우 축약형인 instr을 사용할 수 있습니다.
  • 필터
    profile, compact, ignore는 콜론으로 구분된 패키지 또는 클래스 이름 목록을 허용합니다. 패키지 이름은 마침표로 끝나야 합니다. 필터 옵션을 지정하지 않으면 기본 필터가 사용됩니다.
  • 라인 번호
    lineNumbers=true|false는 호출 트리에서 라인 번호 녹화를 활성화합니다.

jpenable의 경우 옵션 이름에 대시를 사용합니다(예: --line-numbers, --call-tree-mode, --profile). 트리거, 프로브 전용 구성 및 기타 거의 사용되지 않는 옵션과 같은 고급 세션 설정에는 여전히 config 파일을 사용할 수 있습니다.

인라인 설정은 API 호출이나 jpcontroller 없이도 자동화된 녹화를 시작하고 스냅샷을 저장할 수 있습니다. 이 모드에서는 snapshot 옵션이 필요합니다:

-agentpath:/path/to/libjprofilerti.so=offline,snapshot=/path/to/snapshot.jps,recording=cpu:allocation,duration=10m

jpenable을 사용하면 다음과 같이 동일한 녹화를 구성할 수 있습니다:

jpenable --offline --snapshot=/path/to/snapshot.jps --recording=cpu:allocation --duration=10m

다음과 같은 자동 녹화 옵션을 사용할 수 있습니다:

  • 스냅샷
    snapshot=<path>는 저장할 스냅샷 파일을 지정합니다.
  • 녹화 데이터
    recording=<list>는 콜론으로 구분된 데이터 유형 목록을 지정합니다. 이 옵션을 생략하면 CPU 데이터가 녹화됩니다. 스레드와 텔레메트리는 항상 녹화됩니다.
  • 지속 시간
    duration=<time>는 스냅샷이 저장되기 전까지 데이터를 얼마나 오래 녹화할지 지정합니다. 지속 시간을 지정하지 않으면 JVM이 종료될 때까지 녹화가 계속되며, 종료 시 스냅샷이 저장됩니다.
  • 지연 시간
    delay=<time>는 에이전트가 녹화를 시작하기 전에 대기해야 하는 시간을 지정합니다.

시간 값은 음이 아닌 정수이며, 선택적으로 뒤에 s, m 또는 h가 올 수 있습니다. 지원되는 recording 값은 cpu, allocation, jdbc, jpa, mongo_db, cassandra, http_server, http_client, jndi, jms, kafka_producer, kafka_consumer, rmi, grpc, ai, ws, class_loader, exception, socket, file, process 및 gc입니다. 프로브 녹화를 선택하면 CPU 데이터도 함께 녹화됩니다.

config 파일 준비

참조되는 config 파일은 현재 머신의 JProfiler 설치 config 파일일 수 있으며, 이 경우 config 매개변수를 전혀 지정할 필요가 없습니다. JProfiler config 파일은 $HOME/.jprofiler16/jprofiler_config.xml 또는 %USERPROFILE%\.jprofiler16\jprofiler_config.xml에 위치하며, -agentlib VM 매개변수의 config 옵션에 대한 기본값입니다.

다른 머신에서 자동 프로파일링을 수행해야 하여 로컬 JProfiler config 파일을 참조할 수 없는 경우가 많습니다. 이럴 때는 로컬 머신의 JProfiler UI에서 프로파일링 설정을 사용하여 세션을 준비하고, Session→Export Session Settings를 통해 내보낸 후 JProfiler가 실행 중인 머신으로 전송할 수 있습니다.

세션 ID는 세션 설정 대화상자의 "Application Settings" 탭 오른쪽 상단에서 확인할 수 있습니다(아래 스크린샷 참조). 내보낸 파일에 세션이 하나만 포함되어 있는 경우 id 매개변수를 지정하지 않아도 됩니다.

config 파일 동기화

초기 설정을 완료한 후, 향후 프로파일링 실행을 위해 프로파일링 설정을 조정하고 싶을 수 있습니다. 이렇게 하려면 수정할 때마다 config 파일을 원격 머신에 복사해야 합니다.

JProfiler의 원격 세션에는 이 프로세스를 자동화할 수 있는 "Config synchronization" 기능이 있습니다.

세션이 SSH를 통해 시작되는 경우 SSH를 통해 원격 머신으로 config 파일을 직접 복사할 수 있습니다. 그렇지 않은 경우에도 원격 머신에 마운트되어 있을 수 있는 로컬 디렉터리로 config 파일을 복사할 수 있습니다. 마지막으로, 다른 방법으로 config 파일을 복사하는 임의의 명령을 실행할 수도 있습니다.