도커와 젠킨스 (3) - 메모리 부족

김동헌·2023년 12월 2일
0

Jenkins

목록 보기
3/5
post-thumbnail

먼저 저는 AWS EC2 프리티어 유형 t2.micro(RAM 1GB)를 사용하고 있습니다. 1GB RAM을 사용하여 Jenkins를 운영하는 것은 실제로 제한적일 수 있습니다.

Jenkins 자체는 자바 기반의 애플리케이션이며, 일반적으로 상당한 메모리를 필요로 합니다. 여러 작업, 특히 복잡한 빌드나 대규모 프로젝트를 동시에 처리하는 경우 메모리 부족 문제가 발생할 수 있습니다.

해당 포스팅은 1GB의 RAM으로 Jenkins를 실행해 서버가 다운되어서 해결 방법을 찾기 위한 포스팅입니다.


어떤 방법이 있을까 ?

  1. 메모리 업그레이드

    • EC 인스턴스의 메모리를 늘리는 것을 고려해 볼 수 있습니다.
      • InkLink 프로젝트는 프리티어를 유지하며 프로젝트를 진행할 것 이므로 해당 방법은 사용하지 않았습니다.
      • 가상 메모리를 사용할 수는 없을까 ?
  2. 리소스 최적화

    • 가장 기본적인 Jenkins조차 제대로 실행되지 않아 해당 방법으로는 효과를 볼 수 없을 것 같습니다.
  3. 경량화된 CI/CD 도구 사용

    • Github Action 적용의 방법이 있으나 개인적으로 Jenkins를 적용해본 경험이 없어서 Jenkins를 적용해보려고 합니다.

더 다양한 방법이 있겠지만 It`s Me?! 프로젝트에서 규모가 점점 증가함에 따라 서버가 다운되는 일이 종종 있었을 때 Swap 파일을 이용한 경험이 있었습니다.

InkLink에서도 Swap 파일을 이용해 Jenkins를 진행해보고 추후에 문제가 발생한다면 다른 방식으로 포스팅을 해보겠습니다.


Swap 파일

그렇다면 Swap 파일이란 무엇일까요 ?

Swap 파일은 컴퓨터의 물리적 메모리(RAM)가 부족할 때 추가 가상 메모리를 제공하는 파일입니다. 하드 드라이브나 SSD에 저장되며, 운영 체제는 필요에 따라 이 파일을 사용하여 RAM의 일부 데이터를 저장하고 새로운 작업을 위한 공간을 확보합니다.

즉, RAM 공간이 없을 때, swap 공간에 데이터를 기록해서 RAM 사양을 향상시킨 듯한 효과를 낼 수 있습니다.

인스턴스의 유형을 업그레이드 하면 비용이 발생하므로 SSD의 용량이 여유롭다면 swap 용량으로 할당해 비용을 발생시키지 않고 RAM을 향상시킨 듯한 효과를 볼 수 있다는 것이죠 !


유의할 점

1. Swap 메모리는 RAM의 성능을 완전히 대체할 수는 없습니다.
기본적으로 Swap파일(메모리)는 하드 드라이브나 SSD 같은 보조 저장 장치에 위치하기 때문에, 물리적 RAM보다 훨씬 느린 속도로 작동합니다.

Swap메모리는 RAM의 부족한 공간을 임시적으로 해결할 수 있을 뿐, RAM을 완전히 대체할 수는 없습니다.

2. Swap 공간은 무한정 설정할 수 있는 것은 아닙니다.

AWS가 제공하는 권장 스왑 공간은 아래와 같습니다.

기본적으로 swap 공간은 최소 32MB가 되어야 하며, RAM 용량의 2배를 권장하므로 제가 사용중인 t2.micro의 경우 RAM이 1GB이기 때문에 2GB까지 Swap 공간을 할당하는 것이 좋겠네요 !


Swap 공간 할당

1. dd 명령을 사용하여 루트 파일 시스템에 스왑 파일을 생성
sudo dd if=/dev/zero of=/swapfile bs=128M count=16

명령에서 bs는 블록 크기이고 count는 블록 수입니다.
Swap File Size = bs(블록 크기 옵션) * count(블록 수 옵션)
명령에서 스왑 파일의 크기는 2GB(128MB x 16)입니다.

2. 스왑 파일의 읽기 및 쓰기 권한 업데이트
sudo chmod 600 /swapfile

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

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

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

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

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

/swapfile swap swap defaults 0 0

7. 추가된 free 공간 확인
free -h

참고자료 - AWS

profile
백엔드 기록 공간😁

0개의 댓글