박주니 개발 정리

AWS Flask 서버 PM2 Gunicorn 설정 방법 본문

회고

AWS Flask 서버 PM2 Gunicorn 설정 방법

박주니 2025. 3. 18. 17:40
728x90
반응형

설명전)

AWS에서 인스턴스 유형을 통해 현재 인스턴스에 설정한 유형에 vCPU를 확인합니다. 

저는 t3.small로 설정했습니다. 

Gunicorn 공식문서

https://docs.gunicorn.org/en/stable/settings.html#workers

공식으로 확인했을때는 t3.small 기준으로 

Worker :  vCPU * 2 

threads : 각 Woker 4개 

즉 t3.small은 동시 접속이 가능한 요청 수는 16개여야 하는데 

여기서 메모리가 2GiB밖에 되지 않기 때문에  부담되지 않는 선은 Worker 2~3개입니다. 

 

AWS는 티어에 따라 CPU랑 메모리가 정해져있기때문에 만약에 저렴한 비용으로 이부분을 개선하고 싶으시면

Oracle에서는 CPU, 메모리를 각각 설정이 가능하기 때문에 오라클 클라우드 설정도 고려하셔야합니다. 

 

준비) PM2 설치 및 Python Conda 환경 설정 


 

1. Python 가상환경 접속합니다. 

2. Gunicorn 설치합니다. 

pip install gunicorn

3. Gunicorn 실행 스크립트를 엽니다. 

nano ~/gunicorn_pm2.sh

4. Gunicorn 설정 코드를 넣어서 저장합니다. 

#!/bin/bash
source ~/miniconda3/bin/activate myenv
exec /home/ec2-user/miniconda3/envs/myenv/bin/gunicorn --workers 2 --threads 4 --bind 0.0.0.0:3003 app:app

추가 설명)

worker : cpu 및 메모리 상황에 따라서 설정하시면 됩니다.

app:app : app.py를 의미합니다. 만약에 서버 파일이 다른 이름이라면 그 이름에 맞게 설정하시면 됩니다. 

bind 0.0.0.0:3003 : 서버 포트를 맞게 넣으시면 됩니다. 

source : myenv는 예시이고 만약에 가상환경 생성시 설정했던 이름을 넣으시면 됩니다. 

exec : 현재 루트는 제 개발환경에 miniconda3 위치임으로 진행하실때는 miniconda3 위치를 찾으셔서 넣으시면 됩니다. 

 

nano로 열었을 경우 저장 Tip)

Ctrl+X를 눌르고 Y입력한다음 엔터를 누르시면 저장이됩니다. 

5. Gunicorn 설정 스크립트 실행 권한 부여합니다. 

chmod +x ~/gunicorn_pm2.sh

6. Gunicorn 설정 스크립트로 PM2 실행합니다. 

pm2 start ~/gunicorn_pm2.sh --name gunicorn-app

7. PM2가 정상적으로 실행되고 있는 지 확인합니다. 

pm2 list

8. Gunicorn Worker가 정상적으로 설정이 되었는 지 확인합니다. 

ps aux | grep gunicorn

추가 설명)

위에 Master을 제외하고 Gunicorn 설정한 Worker 2개가 된것을 확인할 수 있습니다. 

Comments