보관함

리눅스 서버 성능 모니터링 명령어 정리 (top, vmstat, ps, iostat, sar, tcpdump 등)

서버가 느려졌을 때 디스크, CPU·메모리, 네트워크 중 어디가 병목인지 찾는 데 쓰는 명령어와 도구를 정리했다.

1. top – 실시간 프로세스 현황

CPU, 메모리를 많이 쓰는 프로세스를 실시간으로 보여 준다. 기본 3초마다 갱신된다.

키 기능
P / M CPU 사용량 순 / 메모리 사용량 순으로 정렬
t CPU 요약 줄 표시 방식 바꾸기
m 메모리 요약 줄 표시 방식 바꾸기
1 CPU 코어별로 나눠 보기
f 표시할 항목과 정렬 기준 고르기
r renice (우선순위 변경)
k kill (프로세스 종료)
z 컬러 / 흑백 전환

2. vmstat – 프로세스, 메모리, 스왑, I/O, CPU

r(실행 대기 프로세스)가 CPU 코어 수보다 계속 많으면 CPU 병목, si/so(스왑 입출력)가 0 이 아니면 메모리 부족, wa(I/O 대기)가 높으면 디스크 병목을 의심한다.

3. w – 로그인한 사용자와 하는 일

4. uptime – 가동 시간과 평균 부하

load average 는 1분, 5분, 15분 평균이다. CPU 코어 수보다 작으면 여유가 있고, 코어 수를 계속 넘으면 대기하는 작업이 쌓이고 있다는 뜻이다. 코어 수는 nproc 으로 확인한다.

5. ps – 프로세스 목록

출력 항목은 -o 로 고른다. (예: ps -eo pid,user,pcpu,pmem,stat,comm)

6. free – 메모리 사용량

리눅스는 남는 메모리를 캐시로 쓰기 때문에 free 값이 작아도 문제가 아니다. 실제로 쓸 수 있는 양은 available 열을 본다.

7. iostat – CPU 와 디스크 I/O

%util 이 100% 에 가깝거나 await(평균 대기 시간)이 크면 디스크가 병목이다. (sysstat 패키지)

8. sar – 시스템 활동 기록과 조회

sysstat 수집을 켜 두면 지난 기록도 조회할 수 있어서, 문제가 났던 시간대의 상태를 나중에 확인할 때 쓴다.

9. mpstat – CPU 별 사용량

특정 코어 하나만 100% 이면 단일 스레드 프로그램이 병목인 경우가 많다.

10. pmap – 프로세스 메모리 지도

마지막 줄의 mapped(매핑된 전체), writeable/private(그 프로세스만 쓰는 양), shared(다른 프로세스와 공유하는 양)를 보고 메모리를 실제로 얼마나 쓰는지 판단한다.

11. ss, netstat – 네트워크 연결

12. iptraf-ng – 실시간 네트워크 통계

ncurses 화면으로 TCP 연결별, 인터페이스별, 프로토콜별, 포트·패킷 크기별 트래픽을 보여 준다. 지금 배포판의 패키지 이름은 iptraf-ng 다.

13. tcpdump – 패킷 캡처

14. strace – 시스템 호출 추적

프로세스가 멈춰 있을 때 무엇을 기다리는지(파일, 네트워크, 잠금) 확인할 때 쓴다.

15. /proc – 커널이 보여 주는 정보

16. lsof – 열려 있는 파일

프로세스가 열고 있는 파일, 소켓, 파이프, 장치를 보여 준다. 디스크를 언마운트할 때 “사용 중” 오류가 나면 어떤 프로세스가 잡고 있는지 찾는 데 쓴다.

17. htop – top 의 개선판

top 과 같은 정보를 색과 막대그래프로 보여 주고, 화살표로 프로세스를 골라 종료·우선순위 변경을 할 수 있다. 트리 보기(F5)와 검색(F3)도 된다. (apt install htop)

18. iotop – 프로세스별 디스크 I/O

어떤 프로세스가 디스크를 읽고 쓰는지 실시간으로 보여 준다. iostat 으로 디스크 병목을 확인한 뒤 원인 프로세스를 찾을 때 쓴다.

19. nethogs, iftop, vnstat – 네트워크 대역폭

vnstat 기록은 vnStat PHP 같은 웹 화면으로 그래프를 볼 수도 있다.

20. psacct(acct) – 사용자 활동 기록

사용자별로 어떤 명령을 실행했고 자원을 얼마나 썼는지 백그라운드에서 기록한다. (Debian/Ubuntu 패키지는 acct, RHEL 계열은 psacct)

21. arpwatch, Suricata – 네트워크 보안 감시

arpwatch 는 네트워크의 IP·MAC 주소 짝이 바뀌는 것을 기록하고 메일로 알려 줘서 ARP 스푸핑을 찾는 데 쓴다. Suricata 는 OISF 가 만든 오픈소스 침입 탐지·방지 시스템(IDS/IPS)이다.

22. 모니터링 시스템

  • Nagios: 서버, 네트워크 장비, 서비스를 감시하다가 이상이 생기거나 복구되면 알림을 보낸다.
  • Cacti: RRDTool 로 네트워크, CPU, 메모리, 웹 서버 등의 수치를 모아 그래프로 보여 준다.
  • Monit: Apache, MySQL, Nginx, SSH 같은 서비스와 파일, 파일시스템을 감시하다가 문제가 생기면 자동으로 재시작하거나 알린다. 웹 화면도 있다.
  • Monitorix: 내장 웹 서버로 부하, 메모리, 디스크 상태, 서비스, 메일, MySQL 통계 등을 그래프로 보여 주는 가벼운 도구다.
  • 요즘은 Prometheus + Grafana, Zabbix 같은 도구도 많이 쓴다.

참고한 자료: nixCraft – Linux Performance Monitoring Tools, iprize 번역, Tecmint – Command Line Tools to Monitor Linux Performance

관련 글: server monitoring tools, Load Avg, nmon 옵션

Leave a Reply

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

  

  

  

이 사이트는 Akismet을 사용하여 스팸을 줄입니다. 댓글 데이터가 어떻게 처리되는지 알아보세요.