일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- exceljs
- Ai
- CSS
- 배포
- nginx
- huggingface
- AWS
- Remix
- PM2
- docker
- 티스토리챌린지
- nft
- 라라벨
- 블록체인
- WSL
- miniconda
- Kaikas
- React
- chatGPT
- Laravel
- Python
- 회고
- jquery
- metamask
- threejs
- NextJS
- netfunnel
- 오블완
- node
- polygon
- Today
- Total
박주니 개발 정리
AWS Flask 서버 PM2 Gunicorn 설정 방법 본문
설명전)
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개가 된것을 확인할 수 있습니다.