티스토리 뷰

반응형

# 서론

Uvicorn은 싱글 프로세스라 서비스를 실제로 할 때 서버 성능 저하가 발생할 수 있다. 그래서 해당 Uvicorn들을 여러개 관리하여 멀티프로세스 환경을 구성할 수 있도록하는 Gunicorn을 사용해서 프로세스를 여러개 구동한다.

 

# Gunicorn 설치

pip3 install gunicorn

 EC2 환경에 Gunicorn을 설치한다.

 

# Gunicorn 실행

gunicorn main:app --workers 2 --worker-class uvicorn.workers.UvicornWorker --daemon --access-logfile ./log.log

--workers : 프로세스 갯수다 (최대 vcpu 갯수 * 2 만큼 설정하기를 권장)

--worker-class : 프로세스를 다중으로 실행하려면 필요한 옵션이다.

--daemon : 백그라운드로 실행한다.

--access-logfile ./log.log : log.log 이름으로 로그를 기록한다.

 

ps -ef | grep python3 로 확인해보면 그림처럼 프로세스가 여러개 생긴걸 확인할 수 있다. (이제 다중 요청 처리가 가능하다)
하나는 master 프로세스고 나머지 두개가 slave process다.

ps -ef | gunicorn 으로도 확인 가능하다.

 

# Gunicorn 종료

프로세스를 다 그냥 죽이면 된다. (한 번에 종료하는 방법이 있는지는 모르겠다.. 일단 master 프로세스를 죽여도 slave들은 동작하는 것 같다.)

 

반응형
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크