AWS 프리티어 EC2 에러 (Client_loop: send disconnect: Broken pipe)

노영석·2022년 12월 23일
0

팀 프로젝트

목록 보기
3/3

AWS EC2 에러 (Broken Pipe)

프로젝트 배포에 AWS 프리티어 EC2를 사용했는데 배포가 간혹 멈추는 현상이 있었다. 에러로그를 살펴보니 다음과 같은 에러가 있었다.

Client_loop: send disconnect: Broken pipe

EC2의 CPU 사용률을 모니터링해보니 멈추는 현상이 있을 때 다음처럼 CPU 사용률이 급격히 증가하는 것을 확인할 수 있었다. 프리티어 EC2에서 기본적으로 제공하는 CPU는 1GB인데 이 것을 늘리기 위해 방법을 찾아보았다.

해결 방법

SWAP 메모리 사용

AWS 공식 홈페이지에서 해결 방법을 찾았다.
https://aws.amazon.com/ko/premiumsupport/knowledge-center/ec2-memory-swap-file/

  1. Swap 메모리 할당
    sudo dd if=/dev/zero of=/swapfile bs=128M count=16

  2. 읽기, 쓰기 권한 부여
    sudo chmod 600 /swapfile

  3. Linux 스왑 영역 설정
    sudo mkswap /swapfile

  4. 스왑 공간에 파일을 추가하여 즉시 사용
    sudo swapon /swapfile

  5. 프리시저가 성공적인지 확인
    sudo swapon -s

  6. /etc/fstab 파일을 편집하여 부팅 시 스왑 파일을 시작

  • vi에서 파일 열기
    sudo vi /etc/fstab
  • 파일 끝에 다음 내용을 추가
    /swapfile swap swap defaults 0 0

이 방법으로 CPU의 용량을 1GB에서 3GB로 업그레이드 했더니 같은 에러는 발생하지 않았다. 전에 했던 프로젝트는 이런 에러가 발생하지 않았는데 WebSocket을 사용해서 CPU 부하량이 많았던 프로젝트라 그랬던 것이라 생각한다. 그래서 CPU의 부하를 최대한 줄이기 위해 In-Memory DB인 Redis로 구현했던 랭킹시스템도 RDS에서 구현하는 것으로 변경했다.

profile
공부하자!

0개의 댓글