Linux

strace

studioesso 2026. 1. 5. 15:29

프로세스가 동작하는 동안 호출하는 시스템 콜들을 추적할 수 있는 명령어.

 

기본적인 명령어 동작부터 서버에 올라와 있는 애플리케이션까지 시스템 콜 추적이 가능하고, 서버내 프로세스의 이상 동작이 의심될 경우에도 strace를 통해 프로파일링을 진행한다.

 

주요 옵션

-s : 출력 문자열의 최댓 값. (기본=32, 최대=65535), 출력 값이 잘려서 나올 경우 해당 옵션으로 최댓 값을 주어 다시 실행

-t : timestamp, (-tt : microseconds 단위까지 출력, -ttt : 유닉스 타임)

-T : 각 시스템 콜이 호출되는데 소요된 시간을 행 끝에 출력

-f : fork()로 생성된 자식 프로세스의 시스템 콜까지 추적 (멀티 스레드, 멀티 프로세스 애플리케이션 추적 시 필요)

-o : 출력 결과를 파일로 저장 (인수로 파일명 입력)

-p : 이미 동작 중인 프로세스 추적 시 사용하는 옵션 (인수로 pid 입력)

 

strace 예시

 

실제 내 서버에 돌고 있는 strace 결과다. (동작 중인 프로세스에 대한 strace는 부하를 줄 수 있기 때문에 서비스 환경에서는 사용에 유의해야 한다.)

 

상당히 긴 json payload를 wrtie()의 인자로 들어가 호출되고 있는데, 해당 콜이 주기적으로 발생한다.

500393은 해당 서버내 돌고 있는 next.js 프로세스이고 write의 첫 번째 인자 3은 데이터를 쓰고 있는 파일의 디스크립터이다.

마지막 인자 670은 기록하고자 하는 바이트 수, =670은 기록에 성공한 바이트 수이다.

 

페이로드를 간단하게 보면 type : axm:monitor라고 적혀 있는데, next.js는 PM2 위에서 동작하고 있고, axm은 PM2의 모니터링을 위한 내부 모듈이다. 모니터링을 위해 주기적으로 서버 상태 메트릭을 로그로 수집하고 있기 때문에 strace에서 확인이 된다.

'Linux' 카테고리의 다른 글

VFS (Virtual File System)  (0) 2026.01.07
tcpdump  (0) 2026.01.06
ss (Socket Statistics)  (1) 2026.01.02
vmstat  (0) 2025.12.30
top  (0) 2025.12.29