본문 바로가기

카테고리 없음

[디버깅] EC2 인스턴스 먹통 혹은 CPU 점유율 100% 문제

일부 프로그램을 잘못 실행시켜 CPU 할당량이 100이 되어 ssh 접속도 안되고 말 그대로 먹통일 때 해결책.

이 해결책에서 가장 중요한 점은 어떤 프로세스가 CPU 100을 차지하고 있는지 예상해야됨. 보통 맨 마지막에 한 작업이 문제가 된다. 필자는 Docker Compose 작업 중 compose를 실행 시킨 이후 이런 문제가 발생하여 컨테이너를 모두 삭제해야겠다는 생각이 들었음.

 

해결 과정

1. EC2 인스턴스 중지

 

2. EC2 인스턴스 하드웨어 사양이 낮을경우 CPU 크레딧 무제한으로 변경

인스턴스 우클릭 -> 인스턴스 설정 -> 크레딧 사양 변경

3. 이후 EC2 시작

 

4. 이 과정에서 새로고침을 계속 누르며 EC2가 '실행 중'이 뜰 때까지 반복한 뒤, '실행중'이라고 나오면 SSH로 계속 접속을 시도한다. '실행중' 되자마자 바로 접속이 불가능하여 계속 접속을 시도해야함. 그러면 CPU 사용량 100이 되기 전에 들어갈 수 있음

 

5. 만약 접속에 성공했다면 의심이가는 프로세스를 죽이거나 필자처럼 도커 이미지를 삭제하는 명령어를 최대한 빨리 수행해야됨. (미리 복사해놨다가 접속하자마자 붙여넣어서 실행하는게 최선)

docker stop $(docker ps -a -q);docker rm -f $(docker ps -a -q)

위는 실행중인 컨테이너를 모두 다운시키고 삭제하는 도커 커맨드 명령어

 

 

(참고로, CPU 100이 된지 확인하는 방법은 인스턴스의 모니터링 탭에서 가능하다.)