Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
Tags
- npm styled-reset
- github io
- createGlobalStyle
- API token
- input type=file
- Git
- bootstrap
- typescript react
- nextjs
- next.js
- dart 변수
- API 토큰
- rewrites
- SCSS
- git lab
- styled components
- nextjs .env
- react typescript
- react
- github
- CSS
- gitaction
- ngrok설치
- fetch
- ngrok실행
- next.js css
- getModifierState
- icon
- There isn’t anything to compare
- react env
Archives
- Today
- Total
꾸준히 성장하는 개발자
[GitAction] EC2에서 스왑(Swap) 추가하기 — 메모리 부족(OOM) 대응 본문
GitHub Actions self-hosted runner에서 pnpm install, next build를 돌리다 보면
인스턴스 RAM이 작을 때 OOM(Out Of Memory) 으로 프로세스가 죽는 경우가 있다.
스왑은 실제 RAM을 늘리는 건 아니지만, 일시적으로 메모리 압박을 완화해 빌드가 끝까지 가게 도와준다.
스왑은 디스크를 쓰기 때문에 느려질 수 있다.
근본 해결은 인스턴스 타입 상향이지만, 비용·긴급 대응으로 스왑은 자주 쓰는 방법이다.
사전 확인
1) 메모리
free -h
Swap이 0이고, 빌드 중 OOM이 났다면 스왑 추가를 검토한다.
2) 디스크 여유 (루트 볼륨)
스왑 파일은 보통 /swapfile로 루트 디스크에 만든다. 4GB 스왑을 만들려면 여유 공간이 4GB 이상 있는지 확인한다.
df -h /
Avail 컬럼을 본다.
스왑 파일 생성 (예: 4GB, dd 방식)
dd는 디스크에 0을 채워 파일을 만든다. fallocate보다 느리지만 환경에 따라 호환성이 좋다.
sudo dd if=/dev/zero of=/swapfile bs=128M count=32 status=progress
- bs=128M count=32 → 약 4GB (2GB로 줄이려면 count=16)
권한 및 스왑 포맷·활성화:
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
적용 확인
sudo swapon --show
free -h
Swap에 크기가 잡혀 있으면 성공이다.
재부팅 후에도 유지 (/etc/fstab)
이미 같은 줄이 있으면 중복 추가하지 않는다.
grep '/swapfile' /etc/fstab || echo '/swapfile swap swap defaults 0 0' | sudo tee -a /etc/fstab
GitHub Actions 러너가 죽었을 때
OOM 이후 러너 서비스가 내려갔을 수 있으므로 다시 올린다.
cd ~/actions-runner
sudo ./svc.sh start
sudo ./svc.sh status
정리
| 항목 | 설명 |
| 목적 | RAM 부족 시 OOM 완화 (특히 CI 빌드) |
| 전제 | 루트 디스크에 스왑 파일 크기만큼 여유 공간 |
| 한계 | 속도는 RAM보다 느림 — 트래픽 많은 서비스의 상시 해결책만으로는 부족할 수 있음 |
'그 외...' 카테고리의 다른 글
| 배포 스크립트에서 비밀번호 없이 SSH 자동 접속하기 (sshpass vs SSH 키 방식) (0) | 2026.05.06 |
|---|---|
| 클로드 코드 공부 정리 (0) | 2026.03.31 |
| [error] pnpm 배포 하는데 에러 발생 (0) | 2025.03.03 |
| [ngrok] ERR_NGROK_3004 / ERR_NGROK_3200 / ngrok-skip-browser-warning (3) | 2025.02.28 |
| [ngrok] ngrok 설치 및 실행 (1) | 2025.02.28 |
