Amazon Elastic Compute Cloud(Amazon EC2) Linux 인스턴스의 높은 CPU 사용률 문제를 해결하고 싶습니다.
해결 방법
높은 CPU 사용량은 애플리케이션 수준 활동, 프로비저닝이 부족한 인스턴스 또는 모니터 불일치로 인해 발생할 수 있습니다. 높은 CPU 사용량 문제를 해결하려면 환경의 스틸 시간 지표를 확인하십시오. CPU 스틸 시간은 인스턴스가 사용할 준비가 되었지만 기본 물리적 리소스가 다른 곳에 할당되어 있어 인스턴스를 진행할 수 없는 시간입니다. 스틸 시간이 길면 애플리케이션 성능에 영향을 미치며 속도 저하, 시간 초과 및 일관성 없는 동작이 발생합니다.
Linux 인스턴스의 높은 CPU 사용량 문제를 해결하려면 다음과 같은 문제 해결 작업을 수행하십시오.
참고: Amazon CloudWatch 지표와 인스턴스 수준 도구 지표 간에 차이가 있을 수 있습니다. 이는 CloudWatch가 하이퍼바이저 수준에서 지표를 수집하지만 인스턴스 도구는 게스트 운영 체제(OS) 내에서 측정하기 때문입니다. 또한 CloudWatch는 인스턴스 도구가 초 단위 데이터를 제공할 수 있는 1~5분 간격으로 샘플링합니다. 시간 동기화 및 CPU 사용량 계산 방법으로도 불일치가 발생할 수 있습니다.
구성의 CPU 스틸 시간 측정
구성의 스틸 시간을 보려면 다음 명령을 실행합니다.
top
출력 예시:
top - 14:23:45 up 7 days, 2:03, 1 user, load average: 0.45, 0.50, 0.45
Tasks: 105 total, 1 running, 104 sleeping, 0 stopped, 0 zombie
%Cpu(s): 5.3 us, 2.1 sy, 0.0 ni, 85.6 id, 1.2 wa, 0.0 hi, 0.3 si, 5.5 st
MiB Mem : 3949.2 total, 146.7 free, 1367.8 used, 2434.7 buff/cache
MiB Swap: 0.0 total, 0.0 free, 0.0 used. 2312.8 avail Mem
출력에서 st 값을 확인하여 CPU 스틸 시간의 백분율을 구합니다. 위 예에서 스틸 시간은 전체 CPU 시간의 5.5%를 차지합니다. 스틸 시간을 5% 미만으로 유지하는 것이 가장 좋습니다. 스틸 시간이 지속적으로 10%를 초과하는 경우 인스턴스에 잘못된 구성 문제가 있는지 확인하십시오.
CloudWatch를 사용하여 CPU 모니터링
CloudWatch를 사용하여 인스턴스 성능을 모니터링한 다음, CPUUtilization 지표를 확인합니다. 또한 t2 및 t3 인스턴스의 CPUCreditUsage 및 CPUCreditBalance를 확인할 수 있습니다.
CloudWatch 지표와 인스턴스에 표시되는 항목 간에 차이가 있는 경우 CloudWatch 에이전트를 올바르게 구성했는지 확인하십시오. /opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log에서 오류를 확인하십시오.
참고: CloudWatch는 기본적으로 스틸 시간 지표를 제공하지 않습니다. 대신 사용자 지정 지표를 추가하도록 CloudWatch 에이전트를 구성해야 합니다.
인스턴스 수준 도구를 사용하여 인스턴스 모니터링
보다 사용자 친화적인 인터페이스로 구성의 스틸 시간을 확인하려면 top 명령 대신 htop을 사용하십시오. htop을 다운로드하려면 GitHub 웹 사이트에서 htop-dev/htop 릴리스를 참조하십시오.
시간 경과에 따른 메모리, 페이징, I/O 및 CPU와 같은 자세한 시스템 수준 리소스 사용량을 보려면 다음 명령을 실행합니다.
vmstat
출력 예시:
$ vmstat 1
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 150272 97545 2394124 0 0 0 5 1 2 5 2 86 1 6
0 0 0 150272 97545 2394124 0 0 0 0 435 625 4 2 88 0 6
참고: 스틸 시간을 보려면 st 열을 확인하십시오.
리소스에 대한 기록 데이터를 보려면 다음 명령을 실행합니다.
sar
출력 예시:
$ sar -P ALL 1 3
Linux 5.4.0-1045-aws (ip-10-0-1-100) 04/22/2025 _x86_64_ (2 CPU)
4:25:00 CPU %user %nice %system %iowait %steal %idle
14:25:01 all 4.50 0.00 2.00 1.00 5.50 87.00
14:25:01 0 4.00 0.00 2.00 1.00 6.00 87.00
14:25:01 1 5.00 0.00 2.00 1.00 5.00 87.00
참고: 정기적으로 CPU 지표를 수집하도록 sar를 구성할 수 있습니다. 자세한 내용은 Red Hat 웹 사이트에서 sar 명령을 참조하십시오.
인스턴스 유형 확인
인스턴스 유형이 다르면 스틸 시간 문제에 더 취약합니다. 예를 들어, 지속적으로 높은 CPU 사용량으로 인해 t2 및 t3과 같은 버스트 가능 인스턴스 유형에서 CPU 크레딧이 고갈되고 성능이 저하될 수 있습니다.
버스트 가능 인스턴스 유형의 크레딧 밸런스가 지속적으로 낮거나 0인 경우 다음 작업 중 하나를 수행하십시오.
인스턴스 또는 애플리케이션 구성 최적화
특정 프로세스에서 높은 CPU를 사용하는 경우 다음 작업을 수행하십시오.
- 높은 CPU 사용량이 예상된 동작인지 조사합니다.
- 애플리케이션 로그에 오류나 예기치 않은 동작이 있는지 확인합니다.
- 애플리케이션 또는 서비스를 다시 시작합니다.
CPU 사용량이 예상한 동작과 일치하지만 여전히 너무 높으면 효율성을 개선하도록 애플리케이션을 조정하십시오. 예를 들어, 컴퓨팅 집약적 워크로드는 다른 인스턴스나 컨테이너로 이동하는 것이 가장 좋습니다.
트래픽 및 로드 패턴 관리
트래픽 또는 로드 패턴으로 인해 높은 CPU 사용량이 반복되는 문제인 경우 다음 작업을 수행하십시오.
관련 정보
리소스 과다 사용률로 인해 상태 확인에 실패하는 EC2 Linux 인스턴스 문제를 해결하려면 어떻게 해야 합니까?