나의 작고 소중한 프리티어 ec2.. 젠킨스를 버텨줘 (메모리 부족)

2024. 5. 30. 17:32· Backend/프로젝트
목차
  1. 문제 상황
  2. 해결 방법
  3. SWAP 메모리 권장 용량
  4. SWAP 메모리 할당 방법
  5. 참고자료

문제 상황

프로젝트를 젠킨스를 통해 배포하려는데, 젠킨스에서 빌드를 시작하면 서버가 터져버리는 상황이 생겼습니다.

 우주로 향하는 CPU 사용률...

 

 

 ec2 프리티어의 기본 제공(t2.micro) 램 용량이 1GB 밖에 되질 않아, 젠킨스를 빌드하면 ssh도 접속하지 못하고 인스턴스를 재부팅해주어야했습니다.

 

 

해결 방법

 서버를 구입해야하나 고민하다가, AWS의 친절한 게시글이 있어 SWAP 메모리를 지정해 해결하는 방법을 찾아 해결했습니다.

 

스왑 파일을 사용하여 Amazon EC2 인스턴스에서 메모리를 스왑 스페이스로 할당합니다.

Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에서 스왑 파일로 사용할 메모리를 할당하고 싶습니다. 어떻게 해야 하나요?

repost.aws

 

여기서 SWAP 메모리란, RAM 용량이 부족해지면 HDD의 공간을 RAM 처럼 사용하는 것입니다. (물론 HDD라 속도는 느림)

 

 

SWAP 메모리 권장 용량

 

스왑 메모리의 용량은 램이 1GB 이하라면 두 배 정도가 권장된다고 합니다. ec2 프리티어는 1GB이기 때문에, 2GB를 목표로 SWAP 메모리를 설정했습니다.

 

SwapFaq - Community Help Wiki

Introduction This FAQ is aimed at Linux novices. People always wonder how much swap they should create at install time, or after installing they may think, "have I made a large enough swap? Should I reinstall with a larger swap?" This FAQ will tell you how

help.ubuntu.com

 

 

 

SWAP 메모리 할당 방법

AWS 게시글에 따라 방법은 아래 순서와 같습니다.

 

1. SWAP 파일 생성

$ sudo dd if=/dev/zero of=/swapfile bs=128M count=16


위 예제에서 스왑 파일은 2GB(128MB x 16) 입니다. 4GB를 목표한다면 count = 32로 설정하면 됩니다.

 

2. 스왑 파일의 읽기 및 쓰기 권한을 업데이트

$ sudo chmod 600 /swapfile

 

3. Linux 스왑 영역을 설정

$ sudo mkswap /swapfile

 

4. 스왑 공간에 스왑 파일을 추가하여 스왑 파일을 즉시 사용할 수 있도록 설정

$ sudo swapon /swapfile

 

5. 절차가 성공적으로 완료되었는지 확인

$ sudo swapon -s

 

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

1. 편집기에서 파일 열기

$ sudo vi /etc/fstab

 

2. 파일 끝에 다음 새 줄을 추가하고 파일을 저장한 다음 종료

/swapfile swap swap defaults 0 0

 

7. 메모리가 잘 할당되었는지 확인

free -m

 

 

 

 

 

 

+ 추가로 ec2 용량의 크기를 늘리는 방법은 아래 블로그를 참고했습니다.

 

ec2 용량 full일 때 대처법

용량 꽉참. ( df -h 로 확인.)루트볼륨 늘리기 (EBS 용량 늘리기)파티션 크기 늘리기 ( growpart 명령)파일시스템 크기 늘리기 (ext4일 경우 resize2fs 명령)끝보면 현재 용량이 꽉 차있다..EBS 콘솔에서 내

velog.io

 

 

 

참고자료

https://repost.aws/ko/knowledge-center/ec2-memory-swap-file

https://help.ubuntu.com/community/SwapFaq#How_much_swap_do_I_need.3F

https://velog.io/@hyeonseop/ec2-%EC%9A%A9%EB%9F%89-full%EC%9D%BC-%EB%95%8C-%EB%8C%80%EC%B2%98%EB%B2%95

'Backend > 프로젝트' 카테고리의 다른 글

ec2 Springboot와 MySQL 컨테이너 연결, 3일 간의 삽질기  (0) 2024.06.05
맥북 m1 로컬 환경에 ngrinder를 Docker로 실행해보자 (포트 변경)  (0) 2024.05.21
우당당탕 눈물의 SpringBoot Redis Cache 적용기  (0) 2024.05.12
[에러 해결] docker compose 실행 시 Error while fetching server API version: HTTPConnection.request() got an unexpected keyword argument 'chunked'  (0) 2024.05.09
젠킨스 설정 후 9090 포트 접속 시 연결이 안되는 상황  (0) 2024.05.08
  1. 문제 상황
  2. 해결 방법
  3. SWAP 메모리 권장 용량
  4. SWAP 메모리 할당 방법
  5. 참고자료
'Backend/프로젝트' 카테고리의 다른 글
  • ec2 Springboot와 MySQL 컨테이너 연결, 3일 간의 삽질기
  • 맥북 m1 로컬 환경에 ngrinder를 Docker로 실행해보자 (포트 변경)
  • 우당당탕 눈물의 SpringBoot Redis Cache 적용기
  • [에러 해결] docker compose 실행 시 Error while fetching server API version: HTTPConnection.request() got an unexpected keyword argument 'chunked'
동구름이
동구름이
동구름이
동구름
동구름이
전체
오늘
어제
  • 분류 전체보기 (177)
    • Java (63)
      • Java 를 파헤쳐보자 (13)
      • BOJ (45)
      • 프로그래머스 (3)
      • SWEA (1)
      • Java GUI (1)
    • JavaScript (17)
      • JS를 파헤쳐보자 (7)
      • 프로그래머스 (7)
      • JS 학습 정리 (1)
    • Backend (32)
      • Spring (3)
      • HTTP (7)
      • 프로젝트 (10)
      • MySQL (5)
      • Redis (3)
      • Elastic Search (1)
      • 인증, 인가 (3)
    • CS (57)
      • 운영체제 (35)
      • Network (22)
    • Git (2)
    • 개발 관련 이것저것 (2)
    • etc (1)
    • 독서 (0)
    • 사설 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 구현
  • 모든 개발자를 위한 HTTP 웹 기본 지식
  • Java
  • 자바스크립트
  • 스택
  • OS
  • 레디스
  • 반효경
  • 네트워크
  • 큐
  • 백준
  • 김영한
  • 자바
  • 프로그래머스
  • BOJ
  • 운영체제
  • 한양대
  • 인프런
  • JCF
  • 이석복

최근 글

hELLO · Designed By 정상우.v4.2.2
동구름이
나의 작고 소중한 프리티어 ec2.. 젠킨스를 버텨줘 (메모리 부족)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.