AWS

[AWS] EC2 인스턴스 CPU사용량 100% 오류(크래딧 문제 아님)

난쏘공돌이 2021. 10. 12. 00:53

본 포스팅은 AWS EC2머신을 사용하던중 cpu사용량이 100퍼센트에 육박하면서 ssh연결등이 모두 끊기는 상황에 대해서 말하고자 합니다.

 

++하단에 추가내용 기술합니다

오류라고 한 것은 어제, 그리고 오늘 비슷한 시간대에 동일한 문제를 경험하였으며, 결코 해당 문제를 유발할 만한 요소가 존재하지 않았다고 생각하기에 오류라는 단어를 사용하였습니다 

1. 상황 설명

리전 : 서울
인스턴스 유형 : t2.micro (free tier)
ssd : 8GB

 

오후 21시경 Node 실습을 위해 새 인스턴스를 생성하고 nodejs를 설치하였음.
21~ 23:50분 경 까지 터미널과 vscode ssh연결 두개를 열어놓고 대기
00시경 폴더생성후 소스코드를 작성하던중 파일이 저장이 안되는 현상이 벌어짐 (VSC상에서)
이후 터미널은 무한 대기상대 VSC는 먹통상태

무언가 이상하다고 생각해서 콘솔로 넘어가 모니터링을 해보니

시간은 UTC기준

저런 상태였고 

대략 저 시간동안 아무것도 못했습니다.

 

사실 이런상황은 어제도 동일하게 경험했었고 아예 인스턴스를 지우고 다시 생성한 상황이었는데 동일한 문제가 생겨

이번엔 지우는 것이 아닌 다른 방법을 찾고 싶었습니다.

 

2. 문제 확인 

문제는 서버에 있으리라 확신했습니다. 

터미널에서 top명령을 실행시켜 두기도 했고 해당인스턴스에는 저 이외에 다른 커넥션은 없었기 때문입니다.

보안 규칙으로 집 공인아이피 이외에는 다 막아두었거든요

 

검색을 통해 해당 문제를 찾다보니 대부분은 AWS사이트의 설명서글이 대부분이었고 

다른문제는 해킹관련문제등이 있었습니다. 그러던 중 한 사이트를 찾게 되었는데요 

https://serverfault.com/questions/690656/why-sometimes-aws-ec2-works-really-slow 

 

Why sometimes AWS EC2 works really slow?

I do only one thing one this server - encoding videos by ffmpeg. And sometimes it does work ok, sometimes it's really slow. I run the same command just for a test: $ sudo time ffmpeg -i test.mp4 ...

serverfault.com

 

해당 글에서 보면 

가장 votes를 많이 받은 답변은 해당 답변입니다.

내용을 크게 두가지로 나눌수 있는데요.

하나는 credit문제

다른 하나는 stop and start (not reboot!!!) 

입니다.

 

크래딧 관련해서는 링크를 하나 올려두겠습니다.

https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/burstable-credits-baseline-concepts.html

 

버스트 가능 성능 인스턴스에 대한 주요 개념 및 정의 - Amazon Elastic Compute Cloud

버스트 가능 성능 인스턴스에 대한 주요 개념 및 정의 기존 Amazon EC2 인스턴스 유형은 고정된 CPU 리소스를 제공하는 반면, 성능 순간 확장 가능 인스턴스는 기본 수준의 CPU 사용률을 제공하면서

docs.aws.amazon.com

해당문서는 cpu credit에대한 설명을 해주고 있는데요. 

 

버스트 가능 인스턴스의 경우 cpu 크래딧을 소모하여 버스트하고 기준치 이하면 크래딧을 얻는 방식이라고 합니다.

해당 크래딧이 부족한데 계속 버스트(기준치보다 많이 사용) 할 경우 추가비용이 나오거나 약간의 스로틀링이 생길수 있는것 같습니다.

https://aws.amazon.com/ko/premiumsupport/knowledge-center/ec2-linux-resource-over-utilization/

 

3. 문제 해결

결국 저는 두번째 방법인 stop and start 로 해결했습니다.

사용률이 뚝 떨어진 것을 보실수 있으시죠?

 

다만 reboot가 아닌 정지 이후 시작을 하다보니 퍼블릭ip가 바뀌게 됩니다. 

그렇기 때문에 서비스할때 이 문제를 어떻게 해결해야 할지 좀 더 고민을 해봐야겠습니다.

 

4. 후기

허무합니다.. ㅜㅜ 그렇지만 더 큰 서비스를 하기전에 이런 경험을 할 수 있어 감사하기도 합니다 ㅎㅎ

이런문제가 발생하지 않는다면 좋겠지만 항상 이런 방법 외에도 다른 대응책도 항상 가지고 있어야겠다고 생각했습니다.

https://aws.amazon.com/ko/premiumsupport/knowledge-center/ec2-linux-resource-over-utilization/

 

리소스 과다 사용으로 인한 EC2 Linux 인스턴스 상태 확인 실패 문제 해결

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

aws.amazon.com

직렬콘솔및 복구인스턴스를 사용하는 문서도 첨부합니다!

 

 

 

 

 

 

++ 추가내용 VSC의 extension ssh의 경우 몇가지 이슈가 있는것을 확인했습니다.

계속적으로 VSC의 ssh기능을 사용했을때 EC2인스턴스가 99%를 찍는문제가 계속 발생하여 몇가지 해결책을 시도해보았지만 다 실패했습니다.

 

로그 첨부합니다

[01:48:26.791] [Forwarding server 4044] Got connection 1
[01:48:26.811] [Forwarding server 4044] Got connection 2
[01:53:06.595] ------




[01:53:06.595] SSH Resolver called for "ssh-remote+7b22686f73744e616d65223a22415753227d", attempt 2, (Reconnection)
[01:53:06.595] SSH Resolver called for host: AWS
[01:53:06.596] Setting up SSH remote "AWS"
[01:53:06.598] Using commit id "ee8c7def80afc00dd6e593ef12f37756d8f504ea" and quality "stable" for server
[01:53:06.602] Install and start server if needed
[01:53:06.604] Using SSH config file "C:\Users\ddaa1\.ssh\config"
[01:53:06.605] Running script with connection command: ssh -T -D 10978 -F "C:\Users\ddaa1\.ssh\config" "AWS" bash
[01:53:06.607] Terminal shell path: C:\WINDOWS\System32\cmd.exe
[01:53:06.868] > ]0;C:\WINDOWS\System32\cmd.exe
[01:53:06.868] Got some output, clearing connection timeout

상단의 두줄은 잘 연결이 되었을때이며, 아래는 연결오류가 났을때입니다.. 대략 5분정도의 텀이있네요

 

먼저 https://www.python2.net/questions-1304334.htm

 

새 위치로 이동 한 후에도 VScode SSH 확장이 계속 연결 해제 됨

최근에 다른 나라로 이사했지만 원격으로 일을했기 때문에 작업 공간이 중단되지 않을 것이라고 생각했습니다. 그러나 이제 vscode에서 ssh를 통해 내 작업 공간에 연결하려고 시도하고 있으므로

www.python2.net

해당글을 토대로 서버의 vscode 연결파일을 삭제했으나 실패하였습니다.

 

extension 셋팅의 config파일 경로를 바꾸어 주었음에도 실패입니다..

https://stackoverflow.com/questions/60458459/stuck-remote-ssh-0-49-0-setting-up-ssh-host-dev-details-initializing-vs

 

Stuck: [Remote - SSH 0.49.0] Setting up SSH Host DEV: (details) Initializing VS Code

I have successfully used the vscode's extension Remote-SSH on a few remote linux servers. However, I cannot get past the "Acquiring lock" message in my vscode terminal on one particular server and ...

stackoverflow.com

해당문제는 권한문제입니다만.. 혹 이글을 타시고 오시는분이 해당 글을 통해 해결이 되시면 좋겠다는 생각에 올려봅니다.

글의 해결한 분은 ssh가 아닌 ssh - nightly로 바꾸셨다고합니다..

 

혹 해결이 된다면 해당포스팅을 업데이트 하도록 하겠습니다..

해결이 될때까진 teminal 로 접속해서 nano로 사용하려합니다..