LabHub

CPU·메모리 누수 판별 · 메모리를 읽는다 · 실습

느리다는 신고를 쪼갠다

LabHub 에서 이어서 보기

목표

"서버가 느려요" 를 CPU · 메모리 · I/O 중 무엇인지로 쪼갭니다. 숫자를 직접
읽고, 누수인지 캐시인지를 기울기로 가릅니다.

왜 중요한가

느리다는 신고에 대한 가장 흔한 대응은 "사양을 올리자" 입니다. 그런데 D 상태
프로세스가 20개라 load 가 20인 기계에 CPU 를 늘리면 아무 일도 일어나지 않습니다.
증상과 원인을 잇는 숫자를 찾는 것이 이 실습의 전부입니다.

이 환경의 제약이 곧 훈련이다

이 파드는 커널 권한이 전부 제거돼 있어 perf·strace·bpftrace 를 쓸 수
없습니다. 대신 /proc/sys/fs/cgroup 을 직접 읽습니다. 그건 저 도구들이
안에서 하는 일이고, **도구를 설치할 수 없는 고객사 서버에서 실제로 하게 되는
일**이기도 합니다.

단계

1. 60초 분류 → /root/perf/01-triage.txt
2. /proc/stat 두 번 읽어 CPU 사용률 계산 → /root/perf/02-cpu.txt
3. CPU 1위 프로세스 → /root/perf/03-top.txt
4. RSS·PSS·Private_Dirty → /root/perf/04-mem.txt
5. 누수를 만들어 기울기로 확인 → /root/perf/05-slope.txt
6. cgroup 한도 → /root/perf/06-cgroup.txt
7. anon 과 file 분리 → /root/perf/07-split.txt
8. 결론 세 줄 → /root/perf/08-verdict.md

참고

단계 8개

  1. 60초 분류
  2. CPU 사용률을 손으로 계산한다
  3. 누가 CPU 를 쓰는지 찾는다
  4. RSS·PSS·Private_Dirty 를 구분한다
  5. 누수를 만들어 기울기로 잡는다
  6. 컨테이너의 진짜 한도를 본다
  7. 힙인가 캐시인가
  8. 결론을 세 줄로