JProfiler 도움말

MBean 브라우저

많은 애플리케이션 서버와 Apache Camel과 같은 프레임워크는 설정 및 monitor 목적으로 다수의 MBean을 노출하기 위해 JMX를 사용합니다. JVM 자체도 JVM의 저수준 작업에 관한 유용한 정보를 제공하는 다수의 플랫폼 MXBean을 게시합니다.

JProfiler에는 프로파일된 VM에 등록된 모든 MBean을 보여주는 MBean 브라우저가 포함되어 있습니다. JProfiler 에이전트가 이미 인프로세스로 실행 중이고 등록된 모든 MBean 서버에 접근할 수 있으므로, MBean 서버에 접근하기 위한 JMX의 원격 관리 레벨은 필요하지 않습니다.

JProfiler는 Open MBean의 타입 시스템을 지원합니다. Open MBean은 여러 기본 타입을 정의하는 것 외에도 커스텀 클래스를 포함하지 않는 복합 데이터 타입을 정의할 수 있습니다. 또한 배열과 테이블을 데이터 구조로 사용할 수 있습니다. JMX는 MXBean을 통해 Java 클래스로부터 Open MBean을 자동으로 생성하는 쉬운 방법을 제공합니다. 예를 들어 JVM에서 제공하는 MBean은 MXBean입니다.

MBean에는 계층 구조가 없지만, JProfiler는 첫 번째 콜론까지의 객체 도메인 이름을 첫 번째 트리 레벨로 취하고 모든 프로퍼티를 재귀적으로 중첩된 레벨로 사용하여 MBean을 트리 형태로 구성합니다. 프로퍼티 값이 먼저 표시되고 끝에 대괄호 안에 프로퍼티 키가 표시됩니다. type 프로퍼티는 최상위 노드 바로 아래에 표시되도록 우선순위가 지정됩니다.

어트리뷰트

MBean 콘텐츠를 표시하는 트리 테이블의 최상위 레벨에는 MBean 어트리뷰트가 표시됩니다.

다음과 같은 데이터 구조가 중첩된 행으로 표시됩니다:

  • 배열
    기본 타입 배열 및 객체 배열의 요소는 인덱스를 키 이름으로 하여 중첩된 행으로 표시됩니다.
  • 복합 데이터
    복합 데이터 타입의 모든 항목은 중첩된 행으로 표시됩니다. 각 항목은 임의의 타입일 수 있으므로 중첩은 임의의 깊이까지 계속될 수 있습니다.
  • 테이블 형식 데이터
    java.util.Map의 인스턴스가 하나의 키 열과 하나의 값 열을 가진 테이블 형식 데이터 타입에 매핑되는 MXBean에서 테이블 형식 데이터를 가장 자주 접하게 됩니다. 키의 타입이 기본 타입인 경우 맵이 "인라인"으로 표시되며 각 키-값 쌍이 중첩된 행으로 표시됩니다. 키가 복합 타입인 경우 키와 값 엔트리가 중첩된 "map entry" 요소 레벨이 삽입됩니다. 복합 키와 여러 값을 가진 일반적인 테이블 형식 타입의 경우도 마찬가지입니다.

선택적으로 MBean 어트리뷰트를 편집할 수 있으며, 이 경우 해당 값 옆에  편집 아이콘이 표시되고 어트리뷰트 값 편집 액션이 활성화됩니다. 복합 및 테이블 형식 타입은 MBean 브라우저에서 편집할 수 없지만, 배열이나 기본 타입은 편집할 수 있습니다.

배열과 같이 값에 null을 허용할 수 있는 경우, 에디터에 null 상태를 선택할 수 있는 체크박스가 제공됩니다.

배열 요소는 세미콜론으로 구분됩니다. 마지막 세미콜론 하나는 무시될 수 있으므로 1과 1;은 동일합니다. 세미콜론 앞에 값이 없는 경우 객체 배열에서는 null 값으로 처리됩니다. 문자열 배열의 경우 큰따옴표("")를 사용하여 빈 요소를 만들 수 있으며, 전체 요소를 따옴표로 묶어 세미콜론이 포함된 요소를 만들 수 있습니다. 문자열 요소 내의 큰따옴표는 두 번 연속으로 입력해야 합니다. 예를 들어 다음과 같이 문자열 배열 값을 입력하면

"Test";"";;"embedded "" quote";"A;B";;

다음과 같은 문자열 배열이 생성됩니다:

new String[] {"Test", "", null, "embedded \" quote", "A;B", null}

JProfiler는 숫자형 MBean 어트리뷰트 값으로부터 커스텀 텔레메트리를 생성할 수 있습니다. 커스텀 텔레메트리에 대해 MBean 텔레메트리 라인을 정의하면 텔레메트리 데이터를 제공하는 어트리뷰트를 선택할 수 있는 MBean 어트리뷰트 브라우저가 표시됩니다. 이미 MBean 브라우저에서 작업 중인 경우, 컨텍스트 메뉴의 값에 대한 텔레메트리 추가 액션을 통해 새로운 커스텀 텔레메트리를 편리하게 생성할 수 있습니다.

텔레메트리는 기본 키와 단일 값을 가진 복합 데이터 또는 테이블 형식 데이터의 중첩된 값을 추적할 수도 있습니다. 중첩된 행을 선택하면 경로 구성 요소가 슬래시(/)로 구분된 값 경로가 빌드됩니다.

오퍼레이션

MBean 어트리뷰트를 검사하고 수정하는 것 외에도 MBean 오퍼레이션을 호출하고 반환값을 확인할 수 있습니다. MBean 오퍼레이션은 세터(setter)나 게터(getter)가 아닌 MBean 인터페이스의 메서드입니다.

오퍼레이션의 반환값은 복합, 테이블 형식 또는 배열 타입일 수 있으므로 MBean 어트리뷰트 트리 테이블과 유사한 콘텐츠가 포함된 새 창이 표시됩니다. 단순 반환 타입의 경우 "Return value"라는 이름의 단일 행만 표시됩니다. 다른 타입의 경우 "Return value"가 결과가 추가되는 루트 요소가 됩니다.

MBean 오퍼레이션은 하나 이상의 인수를 가질 수 있습니다. 인수를 입력할 때는 MBean 어트리뷰트를 편집할 때와 동일한 규칙 및 제한 사항이 적용됩니다.

MBean 스냅샷

MBean의 실시간 값을 보는 것 외에도 현재 상태의 스냅샷을 생성할 수도 있습니다. 각 새 스냅샷은 MBean 뷰 섹션에 별도의 뷰로 추가되며 커스텀 레이블을 지정할 수 있습니다. 스냅샷이 생성될 때 현재 필터에 따라 표시되는 MBean만 포함됩니다. 이러한 방식을 통해 특정 MBean에 집중할 수 있으며 목적과 관련 없는 MBean을 쿼리하는 오버헤드를 줄일 수 있습니다.

JProfiler UI에서 스냅샷을 저장하면 모든 MBean 스냅샷도 함께 저장되지만 실시간 MBean 뷰는 저장되지 않습니다. 오프라인 프로파일링의 경우 Controller API 또는 "Trigger MBean snapshot" 트리거 액션을 사용하여 프로그래밍 방식으로 MBean 스냅샷을 생성할 수 있습니다.

Controller API와 트리거 액션 모두 뷰 선택기에 표시되는 선택적 레이블과 포함할 MBean을 필터링하기 위한 선택적 정규식을 지원합니다.