서버 배포를 완료했는데 한가지 문제점이 있었다.
위와 같이 AWS 서버에 Deploy는 온전히 되는데 서버의 메모리가 부족해 Warning 상태에 들어간 것.
AWS 서버의 프리티어 메모리가 1gb밖에 되지 않고 Docker가 메모리를 많이 사용하는 것이
문제일 것이라 예상하고 문제에 접근했다.
1. Swap memory 생성
위와 같이 AWS pem키를 생성하고 커널로 들어간다.
Swap 설정은 다음 블로그를 참고. https://sundries-in-myidea.tistory.com/102
swap 메모리에 어느정도 자원이 할당되었다.
2. 커널에서 docker 메모리 제한 실험
커널에서 docker stats를 입력해 도커의 메모리 사용량을 확인해보니
current_app_1에서 300mb를, current_mysql_1에서 160mb를 사용하고 있었다.
개발용 서버이기 때문에 I/O타임은 크게 중요하지 않고 안정성이 더 요구된다 생각해서
각각을 200mb, 100mb로 수정하고 서버의 안정성이 크게 늘은 것을 확인했다.
도커 memory update는 다음 블로그 참조. https://deonggi.tistory.com/160
3. docker-compose에서 momory limit 설정
version: '3.1'
services:
mysql:
env_file:
- .env
image: mysql:5.7
ports:
- '3306:3306'
deploy:
resources:
limits:
memory: '100m'
app:
ports:
- 80:5000
build: .
depends_on:
- mysql
deploy:
resources:
limits:
memory: '200m'
위와 같이 docker-compose 파일을 수정해서 사용하는 메모리에 제한을 가한다.
이후 이 상태로 다시 배포한다.
Workflow 성공
AWS 서버도 정상적으로 작동한다.
'DevOps' 카테고리의 다른 글
AWS SAA C03 덤프 오답 정리 (100 ~ 200) (0) | 2024.01.26 |
---|---|
AWS SAA C03 덤프 오답 정리 (0 ~ 100) (0) | 2024.01.16 |
github-action에서 변화된 모든 commit message를 추출하는 방법 (0) | 2023.07.23 |
Docker와 Git Action을 이용한 AWS배포 (2) (0) | 2023.02.21 |
Docker와 Git Action을 이용한 AWS배포 (1) (0) | 2023.02.21 |