Linux CPU 사용률이 100%일 때 원인 찾는 방법 (서버가 느려질 때 가장 먼저 확인해야 할 것)

Linux 서버에서 CPU 사용률이 100%까지 올라가면 웹 서비스가 느려지고 SSH 접속이 지연되거나 프로그램 응답 속도가 급격히 떨어질 수 있습니다. 하지만 CPU 사용률이 높다고 해서 항상 CPU 자체가 문제인 것은 아닙니다. 특정 프로세스의 무한 반복 작업, 과도한 요청, 잘못된 애플리케이션 설정, 시스템 작업 등이 원인일 수도 있습니다.

CPU 사용률이 높은 상황에서는 단순히 프로세스를 종료하는 것보다 어떤 작업이 CPU를 사용하는지 먼저 확인하는 것이 중요합니다.

이번 글에서는 Linux에서 CPU 사용률이 100%일 때 원인을 찾는 순서와 해결 방법을 자세히 알아보겠습니다.

CPU 사용률이 높아지는 대표적인 원인

CPU 사용률이 급격히 증가하는 원인은 다양합니다.

대표적인 원인은 다음과 같습니다.

  • 무한 반복 프로그램
  • 웹 서버 과부하
  • 데이터베이스 쿼리 폭주
  • 백업 작업 실행
  • 압축 및 암호화 작업
  • 악성 프로그램
  • 로그 폭증
  • 과도한 크론(Cron) 작업

먼저 원인을 정확하게 찾는 것이 가장 중요합니다.

1단계. 현재 CPU 사용률 확인하기

먼저 현재 CPU 상태를 확인합니다.

top

또는

htop

다음 항목을 확인합니다.

  • us (User CPU)
  • sy (System CPU)
  • id (Idle)
  • wa (I/O Wait)

Idle(id)이 거의 0%라면 CPU가 대부분 사용 중인 상태입니다.

2단계. CPU를 가장 많이 사용하는 프로세스 확인하기

CPU 사용량이 높은 프로세스를 확인합니다.

ps aux --sort=-%cpu | head

CPU를 많이 사용하는 프로세스가 위쪽에 표시됩니다.

문제가 되는 프로그램을 빠르게 찾을 수 있습니다.

3단계. CPU 코어별 사용률 확인하기

멀티코어 서버에서는 코어별 사용률도 확인해야 합니다.

mpstat -P ALL 1

특정 코어만 100% 사용 중인지 확인할 수 있습니다.

애플리케이션 병목을 분석할 때 매우 유용합니다.

4단계. Load Average 확인하기

CPU 사용률과 함께 Load Average도 확인합니다.

uptime

예를 들어 CPU가 8코어인데 Load Average가 30이라면 처리 대기 중인 작업이 매우 많다는 의미입니다.

5단계. 프로세스 상세 확인하기

문제가 되는 PID를 확인했다면 자세한 정보를 조회합니다.

ps -fp PID

실행 중인 프로그램과 실행 명령을 확인할 수 있습니다.

6단계. 스레드(Thread) 확인하기

멀티스레드 프로그램은 스레드별 사용량도 확인하는 것이 좋습니다.

top -H -p PID

어떤 스레드가 CPU를 사용하는지 확인할 수 있습니다.

Java나 데이터베이스 서버를 분석할 때 자주 사용합니다.

7단계. 실시간 CPU 사용량 확인하기

실시간 변화를 확인하려면 다음 명령어를 실행합니다.

pidstat 1

각 프로세스의 CPU 사용률 변화를 지속적으로 확인할 수 있습니다.

8단계. 시스템 로그 확인하기

CPU 사용률이 높아진 시점의 로그를 확인합니다.

journalctl -xe

또는

dmesg | tail

OOM이나 시스템 오류가 함께 발생했는지 확인합니다.

9단계. Cron 작업 확인하기

정기 작업이 CPU를 사용하는 경우도 있습니다.

crontab -l

또는

systemctl list-timers

예약 작업 실행 시간을 확인하는 것이 좋습니다.

10단계. 프로세스 종료 여부 결정하기

원인을 확인한 후 종료가 필요한 경우에는 다음 명령어를 사용할 수 있습니다.

kill PID

종료되지 않는 경우에는 다음과 같이 강제 종료합니다.

kill -9 PID

운영 서버에서는 서비스 영향을 반드시 확인한 후 종료하는 것이 좋습니다.

CPU 사용률이 높을 때 점검 순서

실무에서는 일반적으로 다음 순서대로 확인합니다.

  1. top
  2. ps aux –sort=-%cpu
  3. mpstat
  4. uptime
  5. pidstat
  6. journalctl
  7. dmesg
  8. crontab
  9. systemctl list-timers
  10. kill

이 순서대로 확인하면 대부분의 CPU 관련 문제를 빠르게 분석할 수 있습니다.

CPU 점검 시 주의할 점

CPU 사용률이 높다고 무조건 프로세스를 종료해서는 안 됩니다.

백업 프로그램이나 데이터베이스 작업처럼 정상적인 작업일 수도 있습니다.

원인을 먼저 분석하고, 서비스에 미치는 영향을 고려한 후 조치를 진행하는 것이 가장 안전합니다.

자주 묻는 질문

CPU 사용률이 100%인데 서버가 반드시 문제가 있는 건가요?

아닙니다.

일시적인 작업으로 CPU를 많이 사용하는 경우도 있으므로 지속적으로 사용률이 높은지 확인하는 것이 중요합니다.

CPU를 가장 많이 사용하는 프로세스는 어떻게 확인하나요?

다음 명령어를 사용합니다.

ps aux --sort=-%cpu | head

CPU 코어별 사용률도 확인할 수 있나요?

가능합니다.

다음 명령어를 사용합니다.

mpstat -P ALL 1

마무리

Linux에서 CPU 사용률이 100%까지 상승했다면 원인을 정확하게 찾는 것이 가장 중요합니다. top, ps, mpstat, pidstat, uptime, journalctl 등을 함께 활용하면 어떤 프로세스가 CPU를 사용하는지 빠르게 파악할 수 있습니다. 실무에서는 단순히 CPU 수치만 보는 것이 아니라 Load Average와 시스템 로그까지 함께 분석해야 정확한 원인을 찾고 안정적으로 서버를 운영할 수 있습니다.

댓글 남기기