JProfiler 도움말

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

프로파일링 에이전트가 녹화를 시작하기 전에 프로파일링 설정이 지정되어 있어야 합니다. 이는 JProfiler UI로 연결할 때 이루어집니다. 특정 상황에서는 프로파일링 에이전트가 시작 시에 프로파일링 설정을 알고 있어야 합니다. 주요 사용 사례는 다음과 같습니다:

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

일반적으로 시작 시 프로파일링 설정을 지정하는 것이 가장 효율적인 운영 방식입니다. 클래스 재정의 횟수가 최소화되기 때문입니다. 편의성이 다소 줄어드는 것이 문제가 되지 않는다면 모든 종류의 프로파일링 session에 사용할 수 있습니다.

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

통합 마법사를 사용하는 경우, "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 파일 없이 인라인 설정 사용하기

오프라인 프로파일링의 경우, 가장 일반적인 session 설정만 필요하다면 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.

사용 가능한 인라인 session 설정은 다음과 같습니다:

  • 호출 트리 수집
    callTreeMode=sampling|instrumentation|async는 호출 트리 수집 모드를 선택합니다. instrumentation의 단축어로 instr을 사용할 수 있습니다.
  • 필터
    profile, compactignore는 콜론으로 구분된 패키지 또는 클래스 이름 목록을 받습니다. 패키지 이름은 점으로 끝나야 합니다. 필터 옵션이 지정되지 않으면 기본 필터가 사용됩니다.
  • 줄 번호
    lineNumbers=true|false는 호출 트리에서 줄 번호 녹화를 활성화합니다.

jpenable의 경우 옵션 이름에 대시를 사용합니다. 예를 들어 --line-numbers, --call-tree-mode--profile입니다. 트리거, probe별 구성 및 기타 드물게 사용되는 옵션과 같은 고급 session 설정에는 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가 뒤에 붙습니다. 지원되는 녹화 값은 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, processgc입니다. probe 녹화를 선택하면 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을 준비하고, Session→Export Session Settings를 통해 내보낸 다음 JProfiler가 실행 중인 머신으로 전송할 수 있습니다.

session ID는 session 설정 대화상자의 "Application settings" 탭 오른쪽 상단 모서리에서 확인할 수 있습니다(아래 스크린샷 참조). 내보낸 파일에 session이 하나만 포함된 경우 id 파라미터를 지정하지 않아도 됩니다.

config 파일 동기화하기

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

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

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