Haru Utils

I/O LATENCY

CPU는 낮은데 서버 응답이 느릴 때

load average를 CPU 사용률로 단정하지 않고 CPU·메모리·I/O pressure와 디스크 오류를 비교합니다.
load average highiowait서버 느림IO pressurePSI
환경Linux kernel 4.20+ PSI 권장 · systemd 기반 GNU/Linux
분류CPU·메모리
검토일2026-08-27
진행5단계 · 조회 우선

SAFE OPERATING BOUNDARY

중단·복구 기준부터 확인하세요

STOP CONDITIONS

여기서는 멈추세요

  • 명령 출력의 서버·서비스·경로가 예상 대상과 다르면 변경 단계로 넘어가지 않습니다.
  • 현재 접속 세션, 백업 또는 콘솔 복구 경로를 확보하지 못했다면 상태 변경 명령을 실행하지 않습니다.
ROLLBACK

복구 기준

변경 전 설정과 출력값을 기록하고, 예상과 다른 결과가 나오면 추가 변경을 멈춘 뒤 승인된 운영 복구 절차로 되돌립니다.

ESCALATION PACK

담당자에게 전달할 자료

  • 장애 발생 시각·정상화 시각과 원문 오류 메시지
  • 민감정보를 제거한 조회 명령 출력과 변경 전후 차이
  • 조치 후 동일 조건으로 수행한 재검증 결과
공식 문서와 읽기 전용 진단 명령을 우선 검토했습니다. 실제 서버에서는 설치된 버전의 --help와 man을 함께 확인하세요.

BEFORE YOU START

이런 증상에서 시작합니다

  • CPU 사용률은 낮지만 요청 지연
  • load average 지속 상승
  • 디스크 작업 중 전체 응답 저하
  • 프로세스 D 상태 증가

CHECK THE BRANCH

놓치기 쉬운 원인 분기

01

wa가 높은 경우

CPU가 디스크 I/O 완료를 기다리는 시간이 큰 상황을 우선 조사합니다.

02

PSI memory full이 증가하는 경우

메모리 회수나 thrashing으로 모든 비유휴 작업이 멈춘 시간을 의심합니다.

03

가상 서버의 st가 높은 경우

게스트가 하이퍼바이저에 CPU 시간을 빼앗기는 상황을 인프라 지표와 대조합니다.

FOLLOW THE FLOW

순서대로 확인하기

1
조회시스템을 변경하지 않는 확인 단계

부하와 CPU 대기를 같은 시각에 확인

한 번의 수치보다 짧은 구간의 흐름을 기록합니다.

load average
uptime
CPU·메모리·I/O 흐름
vmstat 1 5
결과 읽기

vmstat의 r은 실행 대기, b는 I/O 등으로 중단 불가능한 대기, wa는 I/O wait, st는 steal time입니다.

다음 판단

wa·b가 높으면 I/O, si·so가 지속되면 메모리 압박 분기로 이동합니다.

2
조회시스템을 변경하지 않는 확인 단계

PSI로 실제 정체 시간 구분

PSI가 제공되는 커널에서는 CPU·메모리·I/O 때문에 작업이 멈춘 비율을 비교합니다.

CPU pressure
cat /proc/pressure/cpu
메모리 pressure
cat /proc/pressure/memory
I/O pressure
cat /proc/pressure/io
결과 읽기

avg10·avg60·avg300은 최근 구간의 정체 비율입니다. full이 지속되면 전체 workload가 멈추는 병목을 뜻합니다.

다음 판단

가장 높은 pressure 자원을 기준으로 다음 조사를 좁힙니다.

3
주의서버 부하나 권한을 고려할 단계

대기 프로세스와 디스크 사용 주체 확인

운영 부하를 고려해 짧은 표본만 수집합니다. pidstat는 sysstat 패키지가 있을 때 사용합니다.

D 상태 프로세스
ps -eo state,pid,ppid,comm,wchan:32 --sort=state | grep '^D'
프로세스 I/O 표본
pidstat -d 1 5
명령이 없으면 설치를 강행하지 말고 기존 모니터링을 사용합니다.
결과 읽기

특정 PID의 읽기·쓰기와 await가 집중되면 해당 서비스·배치 작업을 조사합니다.

다음 판단

PID, 실행 명령, 장애 시작 시각을 기록합니다.

4
조회시스템을 변경하지 않는 확인 단계

블록 장치와 커널 오류 확인

성능 병목과 실제 장치 오류를 구분합니다.

블록 장치 구조
lsblk -o NAME,TYPE,SIZE,FSTYPE,MOUNTPOINTS
현재 부팅의 스토리지 경고
journalctl -k -b -p warning --no-pager | grep -Ei 'I/O error|timeout|reset|nvme|blk_update'
결과 읽기

I/O error·timeout·reset이 있으면 애플리케이션 튜닝보다 스토리지 안정성 확인이 먼저입니다.

다음 판단

장치 오류가 있으면 쓰기 작업을 줄이고 백업·인프라 담당자에게 증거를 전달합니다.

5
변경데이터·서비스 상태가 달라질 수 있는 단계

승인된 작업만 완화하고 같은 지표로 재검증

원인 서비스가 확정된 경우에만 배치 중단·동시성 축소·재시작 등 운영 절차를 적용합니다.

변경 단계입니다. 실행 전 대상 이름과 경로, 서비스 중단 영향, 복구 방법을 다시 확인하세요.
승인된 서비스 재시작 예시
sudo systemctl restart SERVICE_NAME
재검증
vmstat 1 5 && cat /proc/pressure/io
결과 읽기

응답 시간이 회복되고 wa·b·I/O pressure가 함께 낮아지는지 확인합니다.

다음 판단

재발하면 장치 지연과 애플리케이션 I/O 패턴을 장기 지표로 비교합니다.

PRIMARY REFERENCES

공식 문서

배포판과 버전에 따라 옵션·로그 위치가 다를 수 있습니다. 실행 전 서버의 --help와 로컬 매뉴얼을 함께 확인하세요.

도구 빠른 검색

최근 사용한 도구를 다시 열거나, 이름과 기능으로 검색하세요.

검색어와 도구의 입력·결과는 저장하지 않습니다.

↑↓ 이동 · Enter 열기 · Esc 닫기