Chanho_Park
[젠킨스]** Build 시 계속 다른 부분에서 멈춰서 진행 되지 않는 현상[중요] 본문
멈춤
또 다른 곳에서 멈춤
AWS EC2 에서 Jenkins를 설치하여 진행하고
모든 설정이 끝난다음 build 를 시키는데
계속 멈춘다. 진행이 되지를 않는다.
EC2도 계속 멈춰서 재부팅 해야하는 상황이 계속 발생했다.
해결 방법을 계속 모른채 어떻게 해야하지... 계속 재부팅 하고 또 build 하고를 수십번을 했다...
그러다 어쩌다 알게 된 사실..
아주 중요한 사실...
계속 멈추고 Jenkins만 멈추면 되는데 EC2까지 멈추는 현상..
처음 AWS 인스턴스를 만들 때
인스턴스 유형을 t2.micro 로 무료버전을 선택했었다.
이게 Jenkins를 돌릴 때 용량이 부족하다는 것이다.
t2.micro 뿐만 아니라 t2 t3 등 micro는 전부 Jenkins를 돌리기 부적합 하다는 것이다.
몇시간이고 계속 투자했는데 이상하다 생각했지만
2~3일 안에 하느라 모든 과정을 알 수 없어 이유를 찾을 수 없었다.
micro 의 용량은 1GB
이 인스턴스에 Jenkins를 설치하는데
Jenkins는 용량 2GB가 필요하다.
소규모 프로젝트라면 Github 에서 제공하는 Git actions 를 사용하는 것이 가장 좋은 방법이다.
설계를 하는 단계에서 무중단 배포를 하고 당장 이틀 뒤부터 구현을 해야하는 시간이라
시간이 모자랐다..
이에 t2.micro 인스턴스를 그대로 두고 용량을 조금이라도 늘려서 사용할 수 있는 방법을 찾았다.
이제 그 방법에 대해 설명해보겠다.
부족한 용량을 SSD의 일정부분 swap 용량으로 할당하면된다.
RAM 용량이 가득찼을 때, swap 공간에 데이터를 기록해서 RAM 사양을 키운듯한 효과를 볼 수 있다.
다른 인스턴스에 비해서 빠르진 않더라도 Jenkins 서버 하나를 돌릴 순 있을 속도와 용량을 제공 받을 수 있다.
Swap 공간 할당 방법
AWS 에서 공식으로 용량을 늘릴 수 있는 방법을 제공해주고 있다.
1. dd명령을 사용하여 루트 파일 시스템에 스왑 파일 생성
sudo dd if=/dev/zero of=/swapfile bs=128M count=16
bs : 블록크기
count : 블록 수
swap 크기 : 블록크기 * 블록수
(128MB x 16 = 2GB)
2. 스왑 파일의 읽기 및 쓰기 권한 업데이트
sudo chmod 600 /swapfile
3. Linux 스왑 영역 설정
sudo mkswap /swapfile
4. 스왑 공간에 스왑 파일을 추가하여 스왑 파일을 즉시 사용
sudo swapon /swapfile
5. 프로시저가 성공적인지 확인
sudo swapon -s
여기까지 하면 swapfile 에 2GB가 할당되어 있는 것을 확인 할 수 있다.
6. /etc/fstab 파일을 편집하여 부팅 시 스왑 파일 시작
sudo vi /etc/fstab
하면 편집기에서 파일이 열릴 것이다.
아래 코드를 복사하고 , i 를 눌러 Insert 모드 진입 -> 복붙 -> ESC -> wq
/swapfile swap swap defaults 0 0
7. 추가된 free 공간을 확인한다.
free -h
아래와 같이 total 2.0G 를 확인 할 수 있다.
'배포 > Error' 카테고리의 다른 글
[젠킨스] 자동 빌드화를 위한 Github Webhook 404 에러 (0) | 2022.11.06 |
---|---|
[AWS]EC2 인스턴스가 갑자기 사라졌을 때 (0) | 2022.11.06 |
[젠킨스] Build 중 Deployed application Error (0) | 2022.11.05 |
[젠킨스]Build 중 Unable to delete [~Root] Error (0) | 2022.11.05 |
[젠킨스] Tomcat 연동 후 빌드 시 Tomcat Manager Error (0) | 2022.11.05 |