연습 1.4: 고급 프로브 작성

시작하기 전에 연습 1.3: 프로브 전개를 완료해야 합니다.

Probekit은 여러 가지 실제 디버깅과 런타임 분석 문제점을 해결하는 데 사용할 수 있습니다. 프로브 작성과 전개의 기본사항을 배웠으므로 다음 학습에서는 여러 활동을 다루지 않고 대신, 사용자 자신의 어플리케이션 조사를 위해 작성할 수 있는 프로브에 대한 제안사항을 제공합니다.

예외 조사

servlet의 일부 메소드에서 가끔씩 예외가 발생한다고 가정하십시오. 표시되는 로그 메시지는 유용하지 않으며 문제점이 어떤 것인지 명확하게 표시하지 않습니다. 자세한 정보를 얻기 위해 메소드에 예외가 발생할 때마다 실행되는 프로브를 작성할 수 있으며 프로브 단편의 Java 코드가 예외 메시지와 메소드의 인수를 로그할 수 있습니다. 그렇게 하면 예외가 발생한 이유를 쉽게 알 수 있습니다.

이 프로브를 작성하고 전개할 때 다음 사항에 주의하십시오.

메소드의 성능 오류 조사

다음은 매우 복잡한 프로브 예입니다. 대개는 빨리 실행되지만 가끔씩 시간이 오래 걸리는(예: 100ms 이상) 메소드가 프로그램에 있다고 가정합니다.

메소드가 실행될 때마다 시작 시간 및 종료 시간을 기록하는 프로브를 작성할 수 있습니다. 실행 시간이 짧으면 프로브는 아무 것도 하지 않습니다. 실행 시간이 길면 프로브는 메소드의 인수와 실행 시의 프로그램 상태에 대한 다른 중요한 정보를 보고합니다. 그렇게 하면 실행 시간이 길어진 상황을 파악할 수 있습니다.

프로브를 작성할 때 다음 사항에 주의하십시오.

메소드가 시작될 때 이 프로브는 현재 시간을 기록합니다. 메소드 종료 시 프로브는 현재 시간과 기록된 시작 시간을 비교하고 특정 시간("thresholdDuration"에 지정된 시간) 이상 경과하면 System.out을 사용하여 보고서를 인쇄합니다.

재귀(recursive) 메소드 또는 멀티스레드(multi-threaded) 메소드의 성능 오류 조사

방금 설명한 프로브는 재귀(직접 또는 간접) 메소드는 작동하지 않으며 여러 스레드에서 동시에 실행될 수 있는 메소드에도 작동하지 않습니다. 재귀 문제점을 해결하기 위해 스택에서 시작 시간을 기록할 수 있습니다. 멀티스레드 문제점을 해결하기 위해 ThreadLocal 변수에 스택을 저장할 수 있습니다.

다음은 재귀 및 스레드에 안전한 프로브 버전을 작성하는 데 필요한 사항입니다.

학습의 연습 1.5: 복잡한 프로브 논리에 런타임 라이브러리 사용을 계속하십시오.

사용 약관 | 피드백
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.