본문 바로가기

Server

[EC2] 어느날 갑자기 병목(CPU I/O Wait) 이 찾아왔다.

728x90

한동안 평화롭던 서비스에 갑자기 장애 전조증상이 보입니다.

AWS EC2 에서 구동 중인 출결관리 서비스인데 보통 출결시간이 비슷하기 때문에 특정 시간대에 트래픽이 몰립니다.

그런데 오늘은 Busy User가 아닌 Busy Iowait 이 무지하게 올라가네요.

이대로라면 우리의 서비스가 장애로 이어질텐데요.

 

이 그래프는 CPU가 I/O로 인해 병목이 발생하고 있음을 보여줍니다.

그렇다면 I/O 성능이 저하되었거나 무엇인가 과도하게 I/O를 점유하고 있다는 뜻일텐데요.

 

우리 서비스의 문제는 최근 급격히 늘어난 사용자와 이를 감당하지 못하는 IOPS 였습니다.

IOPS(Input/Output Operations Per Second)란 초당 처리 가능한 입출력 작업 수를 의미하는데, 우리가 사용하는 스토리지는 gp2 스토리지였습니다.

gp2는 용량(GiB 단위) 만큼 3 IOPS를 제공하는데 우리 서비스는 100GB 즉 300 IOPS까지 처리 가능한 스토리지를 가지고 있었고, 그동안은 버스트 크레딧(gp2는 크레딧 내에서 3000 IOPS까지 버스트 가능)으로 버텼지만 버스트 크레딧이 소진되자 병목으로 이어진 것이었죠.

 

그래서 우리는 gp3 으로 스토리지를 수정하기로 결정하였습니다.

  • gp3 은 최소 3000 IOPS 와 125MiB/s 의 Throughput 을 제공하고 필요에 따라 이 두 값을 증가시켜 우리에게 필요한 성능을 발휘하도록 커스터마이징 할 수 있는 스토리지 유형입니다.
  • 스토리지는 무중단으로 gp2 -> gp3 수정이 가능합니다.
  • gp3 스토리지에서의 성능 수정 또한 무중단으로 수정이 가능합니다.

(단, 우리가 설정한 성능을 초과하는 I/O를 사용하게 되면 추가 요금이 발생하는 방식이고 버스트 기능은 따로 제공되지 않게 되죠.)

 

역시 모든게 돈이면 다 되는 글로벌 클라우드 서비스답게 우리는 현금을 내어주고 성능을 취합니다.

 

 

 

728x90