pstack 및 gcore를 사용하여 지원을 위한 추가 데이터를 수집하는 방법

기사: 100040938
마지막 발행: 2017-11-08
등급: 1 0
제품: InfoScale & Storage Foundation
문제 설명

지원에서 pstack 및 gcore 명령의 데이터 출력을 요청하는 경우가 가끔 있습니다. 이러한 명령은 Solaris, HP-UX, AIX 및 LINUX에서 사용할 수 있습니다.

pstack

pstack 명령은 프로세스 스택의 16진수 덤프를 인쇄하므로 영향을 받는 시스템의 의심스러운 프로세스에 관한 중요한 정보를 제공합니다.

[root@walv215-a1j:mgeiser]#pstack 1094
1094:   /usr/lib/sendmail -bd -q15m
fefc6004 pollsys  (ffbfd080, 3, ffbfd128, 0)
fef66f20 pselect  (ffbfd080, feff2530, feff2530, 40, ffbfd128, 0) + 1c8
fef67298 select   (8, ffbfdb18, 0, 0, ffbfdb10, 109400) + a0
0002852c getrequests (121744, 7, 7, 11c388, 11c2f8, 3) + 690
00048a94 main     (0, 13f800, 64, 10f800, 121c00, e8c00) + 5b68
0001f6e0 _start   (0, 0, 0, 0, 0, 0) + 108


이 명령은 코어 파일에서도 사용될 수 있습니다.

# pstack core.httpd.1008
core 'core.httpd.1008' of 1008: /opt/IBMHTTPD/bin/httpd
-----------------  lwp# 1 / thread# 1  --------------------
0002e3e8 ???????? (ffbeee7c, 1425, d, a16f0, 82b68, 9b098)
00031188 main     (1, ffbeef94, 96408, ff238018, ff23b03c, 82cf0) + 478
00031bec parse_byterange (1, ffbeef94, ffbeef9c, 96000, 0, 0) + 484
00017308 load_module (0, 0, 0, 0, 0, 0) + 140
-----------------  lwp# 2 / thread# 2  --------------------
ff21ad54 _signotifywait (ff16e000, 0, 0, ff23b540, 0, 0) + 8
ff151ae4 thr_yield (0, 0, 0, 0, 0, 0) + 8c
-----------------  lwp# 3 / thread# 3  --------------------
ff21b3e0 _lwp_sema_wait (fe30de30, ff16e000, 0, fe30dd78, 250c4, 0) + c
ff14944c _swtch   (fe30dd78, fe30dd78, ff16e000, 5, 1000, 1) + 424
ff14d8a4 _reap_wait (ff172a08, 20a38, 0, ff16e000, 0, 0) + 38
ff14d5fc _reaper  (ff16ee30, ff255d18, ff172a08, ff16ee08, 0,
fe400000) + 38
ff15ba1c _thread_start (0, 0, 0, 0, 0, 0) + 40
#


이 명령은 HP-UX, AIX 및 LINUX에서도 사용 가능합니다.

gcore

 
gcore 명령은 코어 덤프를 수동으로 생성하는 데 사용됩니다. 코어 덤프는 프로세스와 추가적인 디버깅 정보가 차지하고 있는 메모리의 스냅샷입니다. 일반적으로 코어 파일은 프로세스가 예상치 않게 종료되는 경우 생성됩니다. 이 기술 참고 사항에서는 실행 중인 프로세스에서 코어 파일을 수동으로 생성하는 방법에 대해 설명합니다.
 
이 명령은 Solaris 및 LINUX에서만 사용 가능합니다.
 
솔루션
 
일반적으로 gcore 및 pstack 명령은 문제 해결 절차에 함께 사용됩니다.
 

pstack 및 gcore를 가져오려면 다음 절차를 사용하십시오.

1) 의심스러운 프로세스의 프로세스 ID를 가져옵니다.

# ps -eaf | grep -i  suspect_process

2) 프로세스 ID를 사용하여 gcore를 생성합니다.

# gcore <proc_id>
 
현재 디렉터리에 core.<proc_id> 파일이 생성됩니다.


3) 이제 생성된 gcore 파일을 기반으로 한 pstack을 생성합니다.

# pstack core.<proc_id>

4) 이제 gcore.xxx 및 pstack 명령의 출력으로 압축된 tar ball을 생성합니다.

이 내용이 도움이 되었습니까?