응용프로그램의 프로파일을 작성할 경우, 기본적으로 프로파일링 및 로깅 Perspective에 콘솔 보기가 표시되지 않습니다.
프로파일링 및 로깅 Perspective에서 콘솔 보기를 열려면 창->보기 표시->콘솔을 선택하십시오.
stdout이 콘솔에 표시되도록 하려면 창->환경 설정->실행/디버그->콘솔을 누르고 프로그램이 표준 출력에 작성할 때 표시를 선택하십시오.
새 Probekit 소스 파일을 작성할 때, 마법사에서 사용할 XML 인코딩을 선택할 수 있습니다. 기본 선택사항은 ASCII입니다. 프로브 소스 파일에서(예를 들어, 레이블 또는 설명 필드나, 단편의 Java 코드에서) ASCII가 아닌 문자를 사용하려면 ASCII가 아닌 UTF-8 인코딩을 선택해야 합니다.
기존 프로브 소스 파일의 인코딩을 변경하려면, 파일을 마우스 오른쪽 단추로 누르고 연결 프로그램 -> 문서 편집기를 선택하십시오. XML 헤더에서 인코딩을 "UTF-8"로 변경하고 파일을 닫으십시오. 다시 마우스 오른쪽 단추를 누르고 연결 프로그램 -> 프로브 편집기를 선택하여 컨텐츠를 편집하십시오.
AS400® iSeries(TM)에서 실행되는 사용자 프로그램에 대해 결함 분석을 사용할 수 없습니다. 이 플랫폼에서 생성된 Hyades 최적화 힙 덤프는 완전하지 않으며 다른 형식으로 힙 덤프를 생성할 수 없습니다.
프로파일링 도구의 성능은 수집되는 데이터 양과 이 데이터가 Workbench로 전송되는 속도에 직접 관련됩니다. 수집하는 양이 늘어날수록, 분석 수행에 소요되는 시간과 여러 타스크를 수행하는 데 사용되는 메모리의 성능은 저하됩니다. 다음은 사용자가 프로파일링 성능을 향상시킬 수 있는 몇 가지 방법입니다.
- 시작할 때는 주어진 기능 부분을 프로파일링하기에 충분하다고 생각되는 최소한의 데이터 양을 수집하는 것이 좋습니다. 이는 프로파일링 실행 구성에서 더 효율적인 필터를 설정하면 가능합니다. 실행->프로파일 대화 상자에서 프로파일링 탭을 선택하십시오 프로파일링 세트, 편집 단추, 다음 >을 차례로 선택하면 필터 대화 상자가 표시됩니다. 필터를 사용하여 관심이 있는 영역만 포함하도록 하십시오. 항상 필터를 변경하여 나중에 다른 데이터나 더 많은 데이터를 포함시킬 수 있습니다.
- 시작 코드를 프로파일링하지 않으려면 실행->프로파일 대화 상자의 프로파일링 - 제한 탭에서 "응용프로그램 실행 시 자동으로 모니터링 시작" 선택란을 선택 취소하십시오. 이렇게 하면 분석하는 프로그램을 실행하는 데 소요되는 시간이 줄어들고 프로파일링에서 시작 코드도 제거됩니다. 프로파일링을 시작하려면 작업공간 가동 후 프로파일링 모니터에서 "모니터링 시작" 도구 모음 단추를 눌러야 합니다.
- 출력 경로를 파일로 재지정할 수 있습니다. 이렇게 하면 RAD의 메모리 사용이 줄어듭니다. 이 프로파일링 파일을 보기 위해서만 사용할 경우, 파일을 나중에 RAD로 가져올 수 있습니다. 그러면 이 타스크에 대한 여유 메모리가 많아집니다. 이는 실행->프로파일 대화 상자에서 실행됩니다. 프로파일링 탭, 대상 서브탭을 선택한 후 프로파일링을 시작하기 전에 "파일로 프로파일링 데이터 전송" 선택란을 선택하십시오. 나중에 파일->가져오기 대화 상자를 사용하여 프로파일링 파일 유형을 선택하십시오. 이 옵션을 선택할 경우 프로파일링 동안 데이터를 볼 수 없습니다. 먼저 가져와야 볼 수 있습니다. 가져오기 대화 상자에서 프로파일링 파일의 일부만 가져와서 메모리 양을 더 줄일 수 있습니다. 다른 부분을 가져온 다음, 그 부분을 별도로 조사하면 도움이 됩니다.
- 프로파일링은 많은 메모리 오버헤드를 야기할 수 있으므로 RAD에서 사용되는 가상 메모리를 늘리면 도움이 될 수 있습니다. RAD를 512MB 가상 메모리(최대 1GB)로 시작하려면 VMArgs=-Xms512m -Xmx1024m 행을 rationalsdp.ini 파일에 추가하십시오.
- 대상 시스템에서 데이터를 수집하는 동안 문제가 발생할 경우, 데이터를 RAD로 전송하기 위해 사용하는 버퍼의 크기를 늘릴 수 있습니다. 다음 예를 serviceconfig.xml에 추가하고 에이전트를 다시 시작하십시오. (그러면 버퍼 크기가 256MB로 증가합니다.) CPU를 많이 사용하는 응용프로그램에서는 다음과 같이 데이터 채널 크기를 더 늘리는 것도 도움이 됩니다. <Agent configuration="default" name="Java Profiling Agent" dataChannelSize="256M" type="profiler"/>
2진 Hyades 최적화 힙 덤프를 수집할 때, "파일로 프로파일링 데이터 전송"을 선택하여 trcxml 파일로 데이터를 전송할 경우, 다음에 유의하십시오.
저장된 힙 파일에 액세스하려면 전개 호스트에서 Agent Controller를 실행하고 있어야 합니다. trcxml 파일에 대해 가져오기->파일 프로파일링을 처음 실행할 경우, 결함 분석 및 오브젝트 참조 그래프 보기가 예상대로 작동합니다.
그러나 두 번째로 가져오기->파일 프로파일링을 실행하면 가져오기는 작동하지만 결함 분석을 실행하거나 오브젝트 참조 그래프를 보려고 하면 실패합니다. 이는 필요한 힙 파일을 더 이상 전개 호스트에서 사용할 수 없기 때문입니다.
이 문제를 해결하려면, 처음 trcxml 파일을 가져온 프로젝트에서 힙 파일에 액세스하십시오. 힙 파일은 프로젝트 디렉토리의 "leakanalysisheapdir" 디렉토리에 있습니다.
IBM(C)OS/390(SVC) 힙 덤프는 아주 큽니다. 오브젝트 참조 그래프 보기에서 힙 덤프를 보기 위해 큰 힙 덤프를 펼칠 경우 많은 시간이 걸릴 수 있습니다. 결국, 작동이 중지된 것처럼 보일 수 있습니다. 진행 모니터가 100%를 표시할 경우에도 Workbench는 힙 덤프를 계속 펼치고 있을 수 있습니다.
"힙 덤프 캡처" 조치를 수행하면 대상 응용프로그램이 전개되는 호스트에서 Hyades 최적화 힙 덤프가 생성됩니다. 힙 덤프 대상 디렉토리는 Agent Controller의 serviceconfig.xml 구성 파일에서 LOCAL_AGENT_TEMP_DIR 설정에 의해 제어됩니다. 이 파일을 찾아서 수정하는 방법에 대한 정보는 "런타임 문제점 발견 및 분석"에서 "Agent Controller 관리" 도움말 항목을 참조하십시오.
"다음 단계에서 힙 덤프 펼치기에 실패함: ...파일 읽기" 또는 "다음 단계에서 결함 분석에 실패함: 힙 오브젝트 참조 그래프 작성"의 오류 메시지가 표시되면 Agent Controller가 전개 호스트에서 실행 중인지 확인한 후 명령을 재시도하십시오. Agent Controller는 전개 호스트에서 Workbench 프로젝트 디렉토리로의 파일 복사에 도움이 됩니다.
결함 분석 중 문제가 발생하면 결함 분석 로그 파일을 보는 것이 유용할 수 있습니다.
결함 분석 중 진단 정보는 LeakAnalysis.log 파일에 기록됩니다. LeakAnalysis.log에는 결함 분석 중 수행되는 다양한 단계의 출력이 포함되며 실행한 결함 분석의 성공 또는 실패 여부도 표시합니다.
LeakAnalysis.log는 프로파일 데이터와 연관되는 프로파일링 프로젝트에 기록됩니다. 예를 들어, Windows에서는 <my_workspace>\ProfileProject\LeakAnalysis.log에 기록됩니다.
추가 정보는 RADLEAKREGIONDUMP 시스템 특성을 사용하여 로그 파일에 기록할 수 있습니다. rationalsdp.ini에 다음 옵션을 추가하십시오.
VMArgs=-DRADLEAKREGIONDUMP=1
rationalsdp.ini 파일은 Rational Software Architect 설치 디렉토리에 있습니다.
결함 분석이 LeakAnalysis.log 파일에서 'JVMDUMP006I 덤프 이벤트 처리가 "미발견" 상태임. 세부사항 "java/lang/OutOfMemoryError"' 메시지로 실패할 경우, 결함 분석 프로세스의 힙 크기를 늘려야 합니다.
이렇게 하려면 Rational Software Architect 시스템 속성 RADLEAKJVMSIZE를 설정하십시오. 이 속성은 결함 분석 중 사용 가능한 JVM 힙 크기를 제어합니다.
RADLEAKJVMSIZE를 설정하려면 다음 옵션을 rationalsdp.ini 파일에 추가하십시오.
VMArgs=-DRADLEAKJVMSIZE=value
여기서, value는 새 힙의 최대 크기입니다(예: 1024M). 기본값은 512M입니다. 반드시 힙 크기를 표시하는 단위(M 또는 G)를 지정해야 합니다.
rationalsdp.ini 파일은 Rational Software Architect 설치 디렉토리에 있습니다.
스레드 분석 프로파일링 기능과 함께 IBM 클래식 JVM을 사용할 경우, 프로파일링 및 로깅 Perspective의 스레드 보기에서 교착 상태에 빠진 모든 스레드에 대해 '잠금 대기 중' 상태를 표시하지 않습니다. 이는 수집된 데이터에서 누락된 정보가 있기 때문입니다. 임시 해결책: 프로파일 대화 상자의 인수 탭에서 VM 인수 필드에 -Xj9를 추가하여 IBM J9 JVM을 사용하십시오.
이름에 ASCII가 아닌 문자가 있는 Probekit 소스 파일은 올바르게 처리되지 않습니다. Probekit 소스 파일 이름에는 ASCII 문자만 사용하십시오.
*.probe 파일의 경우 컨텍스트 메뉴에 표시되는 Probekit->컴파일 조치는 사용하지 마십시오. 대신, *.probe 파일이 있는 프로젝트를 Probekit 프로젝트로 변환하여 표준 빌드 메커니즘을 사용하십시오. (Java 프로젝트를 Probekit 프로젝트로 변환하려면 파일->신규->기타를 사용하고 프로파일링 및 로깅 섹션에서 Java 프로젝트를 Probekit 프로젝트로 변환을 선택하십시오.)
Probekit "대상" 스펙에 대한 패턴에 ASCII가 아닌 문자를 사용하지 마십시오. 대상 패턴에 ASCII가 아닌 문자가 있는 프로브는 올바르게 처리되지 않습니다.
"...경우 적용 범위 데이터 비우기"에 대해 메소드 패턴을 추가할 때 ASCII가 아닌 문자는 사용하지 마십시오.
패키지, 클래스 또는 메소드 패턴 추가 대화 상자의 메소드 필드에서 ASCII가 아닌 문자를 입력할 경우, 유효하지 않은 입력 오류가 표시되고 대화 상자를 처리할 수 없게 됩니다.
임시 해결책: 패턴에서 ASCII가 아닌 문자 대신 와일드 카드(별표) 문자를 사용하십시오.
와일드 카드 문자(별표)로 시작하는 EXCLUDE 필터(예: "*foo")를 사용하면 적용 범위 통계, 적용 범위 탐색기 및 주석을 표시한 소스 보기에 데이터가 표시되지 않습니다. 임시 해결책: 이러한 EXCLUDE 필터는 사용하지 마십시오.
프로파일링 데이터를 수집하려면, 먼저 데이터를 수집하려는 시스템에서 Agent Controller를 실행해야 합니다. RedHat Linux 시스템에서는 Agent Controller에 libstdc++.so 패치인 libstdc++-libc6.2-2.so.3이 필요합니다.
IBM J9 JVM에서 실행되는 사용자 프로그램에 대해 결함 분석 성능을 사용할 수 없습니다.
IBM J9 JVM은 사용자가 IBM_HEAPDUMP 환경 변수를 설정하고 실행 중인 Java 프로세스로 "kill -3" 신호를 전송할 때 heapdump.20041012.093936.2192.dmp와 유사한 이름의 힙 파일을 작성합니다. 이 .dmp 파일은 j9extract 및 jdmpview를 실행하여 사후 처리 및 IBM 힙 덤프를 작성하도록 해야 합니다.
이 힙 덤프의 형식은 클래식 IBM jvm에서 생성되는 힙 덤프 형식과 같지 않습니다.
동일 모니터 이름을 가지고 있는 여러 개의 힙 덤프 세트를 기존 프로젝트로 가져와 나중에 프로젝트를 저장하거나 Workbench를 종료하면, 데이터가 유실될 수 있습니다.
이를 예방하려면, 가져온 힙 세트마다 고유한 프로젝트/모니터 조합을 지정하십시오.
WAS 서버를 시작하여 접속할 경우, Probekit 및 행 레벨 적용 범위 프로파일링 유형은 이미 대상 JVM에 로드된 클래스에 대해서는 데이터를 수집하지 않습니다. 임시 해결책: 이러한 클래스에서 데이터를 수집하려면 이 클래스를 포함하는 프로젝트를 다시 시작하십시오.
Linux에서 결함 분석에 대해 WAS 응용프로그램을 프로파일링하면, 다음 디렉토리에 optheap 파일이 위치합니다.
WAS 6.0의 경우, Rational Software Architect 설치 디렉토리의 runtimes/base_v6/profiles/default에 위치합니다.
WAS 5.x의 경우, Rational Software Architect 설치 디렉토리에 위치합니다.
프로파일링 중, 모든 2바이트 문자는 콘솔 보기에서 ????로 표시됩니다.
Workbench 호스트, 원격 전개 호스트 및 대상 응용프로그램에서의 로케일 설정은 모두 Hyades 최적화 힙 덤프를 수집할 때와 같아야 합니다.
IBM JVM 1.4.1 이전 버전으로 스레드 분석에 대해 프로파일을 작성할 경우, 프로파일링 및 로깅 Perspective의 스레드 보기가 잠금 모니터의 스레드 소유자를 표시하지 않습니다. 이 데이터가 수집되지 않기 때문입니다. 임시 해결책: IBM JRE 1.4.2로 업그레이드하십시오.
Solaris에서 원격으로 프로파일을 작성할 경우, Sun 1.4.x JRE의 결함으로 일부 기능 조합에 대해(특히, 메모리 프로파일링 또는 스레드 분석이 사용되는 경우) 프로파일링이 금지됩니다. Sun 사이트 http://developer.java.sun.com/developer/bugParade/bugs/4614956.html에 이 문제에 대한 설명이 있습니다. 임시 해결책: Sun JRE 1.4.2_06 이상을 사용하십시오.