Linux 에 대한 MustGather 정보
문제가 발생하는 경우 시스템 환경의 상태에 대해 알려진 정보가 많을수록 진단하기가 더 쉽습니다.
IBM® Support Assistant Data Collector 는 문제점 이벤트에 대한 Java™ 진단 파일을 수집하기 위해 권장되는 유틸리티입니다. IBM Support Assistant Data Collector 는 덤프 및 로그 파일과 같은 진단 파일을 수집하고 필요한 경우 IBM으로 정보를 보내는 데 도움을 줍니다. 자세한 정보는 진단 도구 사용을 참조하십시오.
다음 절에서는 Java용 IBM 서비스 팀이 문제점을 해결하는 데 도움을 주기 위해 수집할 수 있는 데이터에 대해 설명합니다.
시스템 덤프 생성
-Xdump:system 명령행 옵션을 사용하여 트리거에 따라 시스템 덤프를 얻을 수 있습니다. 자세한 정보는 덤프 에이전트 사용 을 참조하십시오.
- ps 명령을 사용하여 애플리케이션의 프로세스 ID를 판별하십시오. ps 명령을 참조하십시오.
- 쉘 프롬프트에서
gcore -o <dump file name> <pid>입력
애플리케이션에 대한 시스템 덤프 파일이 생성됩니다. 애플리케이션은 시스템 덤프가 쓰여지는 동안 일시중단됩니다.
시스템 덤프(코어 파일) 수집
Java 덤프 생성
충돌과 같은 일부 경우에는 Java 덤프가 현재 디렉토리에 생성됩니다.
- ps 명령을 사용하여 애플리케이션의 프로세스 ID를 판별하십시오. ps 명령을 참조하십시오.
- 쉘 프롬프트에서
kill -QUIT <pid>입력
이 프로세스에 대한 자세한 정보는 J9 VM 참조에서 Java 덤프 사용 을 참조하십시오.
힙 덤프 생성
JVM에서 사용자 요청 시에 예를 들어, 애플리케이션 내에서 com.ibm.jvm.Dump.HeapDump()를 호출하는 경우 또는 OutOfMemoryError 예외로 인해 JVM이 종료되는 경우 기본적으로 힙 덤프를 생성할 수 있습니다. -Xdump:heap 옵션을 사용하여 힙 덤프 시간 제어를 더 정교하게 지정할 수 있습니다. 예를 들어, 특정 수의 전체 가비지 콜렉션이 발생한 후에 힙 덤프를 요청할 수 있습니다. 기본 힙 덤프 형식(phd 파일)은 사용자가 읽기 가능한 형식이 아니므로 Heaproots와 같은 사용 가능 도구를 사용하여 이를 처리해야 합니다. 자세한 정보는 J9 VM 참조에서 힙 덤프 사용 을 참조하십시오.스냅 추적 생성
기본 조건에서 JVM을 실행하면 특수 포괄 버퍼에서 소량의 추적 데이터를 수집합니다. 이 데이터는 JVM이 예기치 않게 종료되거나 OutOfMemoryError가 발생하는 경우 파일에 덤프됩니다. -Xdump:snap 옵션을 사용하여 스냅 추적이 생성되도록 하는 이벤트를 변경할 수 있습니다. 스냅 추적은 일반 추적 파일 형식으로 되어 있으며 읽을 수 있도록 제공된 표준 추적 포맷터를 사용해야 합니다. 스냅 추적의 컨텐츠 및 제어에 대한 자세한 정보는 스냅 추적 을 참조하십시오.JIT 덤프 생성
GPF(General Protection Fault) 또는 중단 이벤트는 JIT 진단 데이터의 소형 2진 덤프를 생성합니다. 자세한 정보는 JIT 덤프를 참조하십시오.시스템 로그 사용
커널은 시스템 메시지 및 경고를 기록합니다. 시스템 로그는 /var/log/messages 파일에 있습니다. 이를 사용하여 특정 문제점 또는 이벤트를 야기하는 동작을 확인하십시오. 시스템 로그는 시스템의 상태를 판별하는 데도 도움이 됩니다. 기타 시스템 로그는 /var/log 디렉토리에 있습니다.
운영 환경 판별
이 섹션에서는 라이프사이클의 다양한 단계에서 프로세스의 운영 환경을 판별하는 데 유용할 수 있는 명령에 대해 살펴봅니다.
- uname -a
- 운영 체제 및 하드웨어 정보를 표시합니다.
- df
- 시스템의 디스크 여유 공간을 표시합니다.
- 무료
- 메모리 사용 정보를 표시합니다.
- ps -ef
- 전체 프로세스 목록을 표시합니다.
- lsof
- 열린 파일 핸들을 표시합니다.
- top
- 기본적으로 프로세서 사용별로 정렬된 프로세스 정보(예: 프로세서, 메모리, 상태)를 표시합니다.
- vmstat
- 일반 메모리 및 페이징 정보를 표시합니다.
uname, df및 free 출력이 가장 유용합니다. 프로세스의 상태를 판별하기 위해 충돌 전후 또는 정지 중에 다른 명령을 실행할 수 있습니다. 이러한 명령은 유용한 진단 정보를 제공할 수 있습니다.
Java 지원 팀에 정보 보내기
이전 섹션에 나열된 명령의 출력을 수집한 경우 해당 출력을 파일에 넣으십시오.
파일이 클 수 있으므로 Java 지원으로 보내기 전에 파일을 압축하십시오. 파일 압축은 매우 높은 비율로 수행해야 합니다.
다음 명령은 파일 {file1,..,fileN}의 아카이브를 빌드하고 이름이 filename.tgz 형식의 파일로 압축합니다.
tar czf filename.tgz file1 file2...filen추가 진단 데이터 수집
문제점 유형에 따라 다음 데이터도 문제점 진단에 도움이 될 수 있습니다. 사용 가능한 정보는 Java가 시작되는 방법 및 시스템 환경에 따라 다릅니다. 이러한 디버깅 지원이 활성화되어 있지 않으면 구성을 변경하고 Java를 다시 시작하여 문제점을 재현해야 합니다.
/proc 파일 시스템
/proc 파일 시스템은 커널 레벨 정보에 대한 직접 액세스를 제공합니다. /proc/<pid> 디렉토리는 PID(프로세스 ID) <pid>(으)로 프로세스에 대한 자세한 진단 정보를 포함합니다. 여기서 <pid>은(는) 프로세스의 ID입니다.
cat /proc/<pid>/maps 명령은 지정된 프로세스의 메모리 세그먼트(원시 힙 포함)를 나열합니다.
strace 및 ltrace
strace 및 ltrace 명령을 사용하여 추가적인 진단 데이터를 수집하십시오. 추적 도구를 참조하십시오.