리소스 과다 사용으로 인해 상태 확인에 실패하는 EC2 Linux 인스턴스 문제를 해결하려면 어떻게 해야 하나요?

6분 분량
0

리소스 과다 사용으로 인해 Amazon Elastic Compute Cloud(Amazon EC2) Linux 인스턴스가 인스턴스 상태 확인에 실패했습니다.

간략한 설명

리소스 과다 사용으로 인해 상태 확인에 실패하는 가장 일반적인 세 가지 이유는 다음과 같습니다.

  • 인스턴스의 CPU 사용률이 100%에 근접하고 인스턴스에 커널을 실행할 컴퓨팅 용량이 충분하지 않습니다.
  • 루트 디바이스가 100% 꽉 찼기 때문에 다른 프로세스가 완료되거나 시작되지 않습니다.
  • 인스턴스에서 실행 중인 프로세스가 모든 메모리를 사용하여 커널이 실행되지 않습니다.

해결 방법

인스턴스 중지 및 시작

경고:

  • 인스턴스가 중지되면 인스턴스 스토어 볼륨에 저장된 데이터가 손실됩니다. 인스턴스를 중지하기 전에 반드시 데이터 백업을 저장하세요. EBS 지원 볼륨과 달리 인스턴스 스토어 볼륨은 일시적이며 데이터의 영속성을 지원하지 않습니다. 자세한 내용은 인스턴스 중지 시 발생하는 상황을 참조하세요.
  • 인스턴스에서 중지 및 시작 작업을 수행하면 커널에서 실행 중인 모든 프로세스가 중지됩니다. 이는 리소스를 운영 체제에 반환하는 임시 솔루션입니다. 문제의 근본 원인을 해결하지 않으면 과다 사용이 지속됩니다.
  • Amazon EC2가 실행 또는 시작 시 인스턴스에 자동으로 할당한 정적 퍼블릭 IPv4 주소는 중지 및 시작 후에 변경됩니다. 인스턴스가 중지되어도 변경되지 않는 퍼블릭 IPv4 주소를 유지하려면 탄력적 IP 주소를 사용하세요.

자세한 내용은 인스턴스 중지 및 시작을 참조하세요.

Amazon CloudWatch CPU 사용률 지표 확인

인스턴스의 CloudWatch 지표를 확인합니다. CPU 사용률이 100%에 도달했거나 100%에 근접한 경우 다음 옵션을 사용하여 문제를 해결하세요.

참고: AWS CLI 명령을 실행할 때 오류가 발생하는 경우 최신 버전의 AWS CLI를 사용하고 있는지 확인하세요.

인스턴스의 시스템 로그에 오류가 있는지 확인

시스템 로그디바이스에 남은 공간 없음 또는 메모리 부족 오류가 있는지 확인합니다.

디바이스에 남은 공간 없음 오류

인스턴스의 시스템 로그에 "OSError: [Error 28] No space left on device '/var/lib/'"와 유사한 로그가 나타나면 나열된 폴더가 포함된 파일 시스템이 가득 찬 것입니다. 이 예시에서는 /var/lib가 가득 찼습니다.

다음 방법 중 하나를 사용하여 파일 시스템의 공간을 확보할 수 있습니다.

방법 1: Linux 인스턴스용 EC2 직렬 콘솔 사용

Linux 인스턴스용 EC2 직렬 콘솔을 활성화한 경우 이 콘솔을 사용해 지원되는 Nitro 기반 인스턴스 유형 및 베어 메탈 인스턴스 문제를 해결할 수 있습니다. 직렬 콘솔은 부팅 문제, 네트워크 구성 및 SSH 구성 문제를 해결하는 데 도움이 됩니다. 직렬 콘솔은 작동하는 네트워크 연결 없이 인스턴스에 연결됩니다. Amazon EC2 콘솔 또는 AWS CLI를 사용하여 직렬 콘솔에 액세스할 수 있습니다.

이전에 EC2 직렬 콘솔을 사용한 적이 없는 경우 연결을 시도하기 전에 사전 요구 사항을 검토하고 액세스를 구성해야 합니다. 인스턴스에 연결할 수 없고 직렬 콘솔 액세스를 구성하지 않은 경우 방법 2: 복구 인스턴스 사용의 지침을 따르세요. EC2 직렬 콘솔 구성에 대한 자세한 내용은 EC2 직렬 콘솔 액세스 구성을 참조하세요.

방법 2: 복구 인스턴스 사용

경고: 다음 절차를 진행하려면 인스턴스를 중지해야 합니다. 인스턴스가 중지되면 인스턴스 스토어 볼륨에 저장된 데이터가 손실됩니다. 인스턴스를 중지하기 전에 반드시 데이터 백업을 저장하세요. EBS 지원 볼륨과 달리 인스턴스 스토어 볼륨은 일시적이며 데이터의 영속성을 지원하지 않습니다. 자세한 내용은 인스턴스 중지 시 발생하는 상황을 참조하세요.

1.    Virtual Private Cloud(VPC)에서 새 EC2 인스턴스를 시작합니다. 손상된 인스턴스와 동일한 Amazon Machine Image(AMI)와 가용 영역을 사용하세요. 새 인스턴스가 복구 인스턴스가 됩니다.

또는 액세스할 수 있는 기존 인스턴스를 사용하세요. 기존 인스턴스는 손상된 인스턴스와 동일한 AMI를 사용하고 동일한 가용 영역에 있어야 합니다.

2.    손상된 인스턴스를 중지합니다.

3.    손상된 인스턴스에서 Amazon Elastic Block Store(Amazon EBS) 루트 볼륨(/dev/xvda 또는 /dev/sda1)을 분리합니다. 루트 볼륨의 디바이스 이름(/dev/xvda 또는 /dev/sda1)을 기록해 둡니다.

4.    복구 인스턴스에 보조 디바이스(/dev/sdf)로 EBS 볼륨을 연결합니다.

5.    SSH를 사용하여 복구 인스턴스에 연결합니다.

6.    복구 인스턴스에 연결된 새 볼륨의 탑재 지점 디렉터리(/rescue)를 생성합니다.

$ sudo mkdir /rescue

7.    6단계에서 생성한 디렉터리에 볼륨을 탑재합니다.

$ sudo mount /dev/xvdf1 /rescue

디바이스(/dev/xvdf1)가 다른 디바이스 이름으로 복구 인스턴스에 연결되었을 수 있습니다. lsblk 명령을 사용하여 사용 가능한 디스크 디바이스와 탑재 지점을 보고, 올바른 디바이스 이름을 확인하세요.

참고: 다음과 비슷한 오류 메시지가 표시될 수 있습니다.

"...wrong fs type, bad option, bad superblock on /dev/nvme2n1, missing codepage or helper program, or other error."

위의 오류는 XFS 파일 시스템과의 UUID 충돌 문제로 인해 발생합니다. 이 오류가 발생할 경우 Amazon EBS 볼륨을 탑재할 수 없는 이유는 무엇인가요?를 참조하세요.

8.    du -h 명령을 실행하여 어떤 파일이 가장 많은 공간을 차지하는지 확인합니다.

du -shcm /rescue/var/lib/* |sort -n

9.    필요에 따라 파일을 삭제하여 추가 공간을 확보합니다.

10.    unmount 명령을 실행하여 복구 인스턴스에서 보조 디바이스의 탑재를 해제합니다.

$ sudo umount /rescue

탑재 해제 작업이 실패할 경우 탑재 해제를 완료하려면 복구 인스턴스를 중지하거나 재부팅 해야 할 수 있습니다.

11.    복구 인스턴스에서 보조 볼륨(/dev/sdf)을 분리합니다. 그런 다음 원본 인스턴스에 /dev/xvda(루트 볼륨)로 연결합니다.

12.    인스턴스를 시작한 다음 인스턴스가 응답하는지 확인합니다.

다음 단계를 수행하여 루트 EBS 볼륨의 크기를 조정할 수 있습니다.

1.    EBS 볼륨 크기 수정을 요청합니다.

2.    복구 인스턴스를 사용하여 볼륨 크기를 조정한 후에 Linux 파일 시스템을 확장합니다.

메모리 부족 오류

인스턴스의 시스템 로그에 "Out of memory: kill process" 오류가 표시되면 인스턴스의 메모리가 소진된 것입니다. 메모리가 소진되면 커널 실행에 필요한 메모리가 부족해져 메모리를 확보하기 위해 다른 프로세스가 종료됩니다.

메모리 부족(OOM) 문제를 해결하는 방법에 대한 자세한 내용은 Out of memory:kill process를 참조하세요.

메모리 오류 로그(Out of Memory)를 확인하려면 방법 2. 복구 인스턴스 사용의 7단계 볼륨 탑재까지 실행하세요.

그런 다음 Linux 배포판에 따라 다음 명령을 사용하여 로그에서 메모리 부족 경고를 검색합니다.

Amazon Linux 1 및 Amazon Linux 2

sudo grep -i -r 'out of memory' /var/log/

Amazon Linux 2023

$ sudo journalctl -p err | grep -i "out of memory"

-또는-

$ sudo dmesg | grep -i "out of memory"

메모리 부족(OOM) 문제를 해결하는 방법에 대한 자세한 내용은 Out of memory:kill process를 참조하세요.

페이지 할당 실패

페이지 할당 실패는 커널 메모리 할당자가 할당 요청에 실패할 때 발생합니다. 이 경우 페이지 할당 실패 메시지가 시스템 로그에 추가됩니다.

메모리 부족 문제를 해결하려면 인스턴스를 더 큰 인스턴스 유형으로 업그레이드하는 것이 좋습니다. 또는 임시 인스턴스 스토어 볼륨을 사용하는 인스턴스의 경우 인스턴스에 스왑 스토리지를 추가하여 메모리 부족 문제를 줄일 수 있습니다.

스왑 공간 설정에 대한 자세한 내용은 다음을 참조하세요.

참고: 인스턴스는 RAM 용량이 가득 차면 스왑 공간을 사용합니다. 스왑 공간은 RAM 용량이 적은 인스턴스에 사용 가능하지만 더 많은 RAM을 대체하지 못합니다. 스왑 공간이 인스턴스의 하드 드라이브에 있기 때문에 실제 RAM에 비해 성능이 느려집니다. 메모리를 늘리거나 더 빠르게 하려면 인스턴스 크기를 늘리는 것이 좋습니다.

페이지 할당 실패에 대한 자세한 내용은 Red Hat 웹 사이트의 페이지 할당 실패란을 참조하세요.

관련 정보

EC2 Linux 인스턴스에 연결할 수 없고 상태 확인에 실패하는 이유는 무엇인가요?

EC2 Linux 인스턴스의 인스턴스 유형을 변경하기 전에 수행해야 하는 단계는 무엇인가요?

EC2 Windows 인스턴스의 높은 CPU 사용률을 진단하려면 어떻게 해야 하나요?

AWS 공식
AWS 공식업데이트됨 10달 전
댓글 없음