CPU 사용률 100% 치솟을 때 원인 추적하는 법


    서버가 갑자기 느려지고 응답이 멈춘다면, 가장 먼저 의심할 것이 CPU 사용률 폭증입니다. CPU가 100%에 묶이면 모든 작업이 밀려 서비스가 마비됩니다. 다행히 리눅스에는 원인을 찾는 강력한 도구들이 있습니다. 이 글에서 추적 방법을 순서대로 정리합니다.

    1. top으로 전체 상황 파악

    가장 기본적인 도구는 top입니다.

    top
    

    화면 상단에서 전체 CPU 사용률을, 아래 목록에서 프로세스별 사용률을 볼 수 있습니다. %CPU 열을 기준으로 정렬되어 있으니, 맨 위의 프로세스가 CPU를 가장 많이 쓰는 범인입니다.

    2. htop으로 더 보기 좋게

    htop은 top보다 시각적으로 보기 편합니다.

    sudo apt install htop -y
    htop
    

    코어별 사용률이 막대그래프로 표시되고, 화살표로 프로세스를 선택해 바로 종료할 수도 있습니다.

    3. 로드 애버리지 이해하기

    top이나 uptime에 나오는 load average는 시스템이 얼마나 바쁜지를 나타냅니다.

    uptime
    

    세 숫자는 각각 1분, 5분, 15분 평균 부하입니다. 이 값이 CPU 코어 수보다 크면 처리할 일이 밀리고 있다는 뜻입니다. 예를 들어 4코어 서버에서 부하가 8이라면 과부하 상태입니다.

    4. 어떤 프로세스인지 자세히 보기

    범인 프로세스의 ID(PID)를 확인했다면, 자세한 정보를 봅니다.

    ps -p PID -o pid,ppid,cmd,%cpu,%mem
    

    명령어 경로를 보면 어떤 프로그램인지, 어떤 작업을 하다 폭주했는지 단서를 얻을 수 있습니다.

    5. 흔한 원인들

    CPU 폭증의 흔한 원인은 다음과 같습니다. 트래픽이 갑자기 몰린 경우, 비효율적인 데이터베이스 쿼리가 반복되는 경우, 무한 루프에 빠진 스크립트, 백업이나 배치 작업이 겹친 경우, 그리고 악성 코드(채굴 등)에 감염된 경우입니다.

    6. 임시 조치와 근본 해결

    당장 서비스를 살려야 한다면 문제 프로세스를 종료할 수 있습니다.

    kill -15 PID
    

    다만 이는 임시 조치일 뿐입니다. 왜 그 프로세스가 CPU를 폭주시켰는지 로그를 함께 분석해 근본 원인을 찾아야 재발을 막을 수 있습니다.

    7. 의심스러운 프로세스 점검

    낯선 이름의 프로세스가 CPU를 100% 쓰고 있다면 보안 침해를 의심해야 합니다. 외부에서 시작된 알 수 없는 프로세스, 숨겨진 디렉터리에서 실행되는 프로그램은 악성코드일 수 있으니 주의 깊게 살펴보세요.

    마무리

    CPU 폭증 추적의 흐름은 top/htop으로 범인 찾기 → load average로 심각도 판단 → ps로 상세 분석 → 로그로 근본 원인 파악입니다. 임시로 프로세스를 죽이는 것에 그치지 말고, 원인을 끝까지 추적하는 습관이 안정적인 서버 운영의 핵심입니다.

    답글 남기기

    이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다