리소스의 과도한 사용으로 인해 EC2 Linux 인스턴스가 응답하지 않는 이유는 무엇입니까?

최종 업데이트 날짜: 2021년 10월 25일

리소스를 과도하게 사용하여 내 Amazon Elastic Compute Cloud(Amazon EC2) Linux 인스턴스가 응답하지 않습니다. 이를 방지하려면 어떻게 해야 합니까?

간략한 설명

인스턴스가 응답하지 않는 이유는 다음과 같은 몇 가지 일반적인 원인이 있습니다.

메모리: EC2 인스턴스는 기본적으로 스왑 공간을 할당하지 않습니다. 메모리가 부족하면 Linux Out Of Memory(OOM) 관리자를 호출할 수 있습니다. OOM 관리자는 데이터베이스, 웹 서버 또는 SSH 서비스와 같은 프로세스를 종료합니다.

네트워킹: 네트워킹이 없으면 시스템이 상태 확인의 ARP 요청에 응답할 수 없습니다. 이러한 경우 인스턴스는 다른 호스트와 통신하지 못합니다.

Amazon Elastic Block Store(Amazon EBS): 디스크 I/O가 없으면 읽기 또는 쓰기 명령이 중단됩니다. 예를 들면 임시 파일 생성, 시스템 라이브러리에서의 읽기 또는 데이터베이스 등이 있습니다.

CPU: 이전의 모든 작업을 수행하려면 CPU 시간이 필요합니다. 장시간 CPU를 100% 사용하면 커널이 정상적인 운영 체제 작업을 수행할 수 없습니다.

이러한 문제는 눈덩이 효과로 누적될 수도 있습니다. 예를 들어 메모리가 부족하면 OOM 관리자가 중요한 프로세스를 종료합니다. 이제 중지된 첫 번째 프로세스에 의존하는 두 번째 프로세스는 훨씬 더 많은 CPU 주기를 시작합니다. 이 작업이 디스크와 관련된 경우 해당 주기에서의 EBS 볼륨도 소진될 수 있습니다. 또한 응답하지 않는 인스턴스에서 통신이 예상되는 다른 인스턴스로 문제가 전송될 수도 있습니다.

해결 방법

리소스의 과도한 사용으로 인해 시스템이 자주 응답하지 않는 경우 다음을 수행하십시오.

정보 수집

  1. Amazon CloudWatch와 같은 모니터링 도구를 사용하여 높은 리소스 사용률의 추세와 패턴을 관찰합니다.
  2. 서비스가 여러 개 있고 어떤 서비스가 리소스를 과도하게 사용하고 있는지 확실하지 않은 경우atop과 같은 유틸리티를 설치하십시오.
  3. 애플리케이션 및 운영 체제 로그를 검토합니다. 이러한 로그는 일반적으로 /var/log/에 있습니다.
  4. 명령 기록을 검토하여 인적 오류가 있었는지 확인합니다. 명령 기록은 일반적으로 ~/.bash_history 파일에 있습니다.
  5. crontab -l 명령을 실행하여 cron 작업을 검토합니다.

취득한 데이터에 기반한 조치

향후 과도한 사용을 방지합니다.

  1. 프로덕션에 새 애플리케이션을 배포하기 전에 테스트 환경과 벤치마크를 생성하여 필요한 컴퓨팅, 메모리, EBS 및 네트워크를 결정합니다.
  2. 내결함성을 고려하여 구축하면서 벤치마크에 따라 배포하십시오. 자세한 내용은 다음을 참조하세요.
    분산 시스템에서 장애 방지를 위한 상호 작용 설계
    자습서: 조정 및 로드 밸런싱된 애플리케이션 설정
  3. 인스턴스를 계속 모니터링하고 특정 리소스 사용 임계값에 대한 경보를 생성합니다.

이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요하세요?