[Django]Nginx, gunicorn, Django 배포 시, Request 처리 속도 문제 해결
2022. 7. 22. 20:13ㆍ프로젝트 로그/테스트x솔루션 JIG 개발기
반응형
Nginx, Gunicorn, Django 조합으로 웹 서비스를 배포 해서 사용하는 중, Client에서 Upload하는 4Kbytes 데이터가 다수 동시에 서버에 보내면, 서버에서 제대로 처리 하지 못하고 400 Error를 발생 시키는 문제가 있었다.
이를 해결하기 위한 방법으로 guniron 실행 시, 아래와 같은 명령으로 worker 갯수와 thread 갯수를 늘려 주니 서버에서 처리하는 속도가 개선되어 문제가 해결 되었다.
command: gunicorn --workers=5 --threads=10 config.wsgi:application --bind 0:8000
최종 docker-compose 파일은 아래와 같다.
version: '3.7'
services:
nginx:
restart: always
build:
context: ./nginx
network: host
dockerfile: Dockerfile.prod
volumes:
# - static_volume:/home/app/web/static
# - media_volume:/home/app/web/media
- ../static:/home/app/web/static
- ../media:/home/app/web/media
- ./data/certbot/conf:/etc/letsencrypt
- ./data/certbot/www:/var/www/certbot
ports:
- 80:80
- 443:443
depends_on:
- web
command : "/bin/sh -c 'while :; do sleep 6h & wait $${!}; nginx -s reload; done & nginx -g \"daemon off;\"'"
certbot:
image: certbot/certbot
container_name: certbot_service
restart: always
volumes:
- ./data/certbot/conf:/etc/letsencrypt
- ./data/certbot/www:/var/www/certbot
depends_on:
- nginx
entrypoint : "/bin/sh -c 'trap exit TERM; while :; do certbot renew; sleep 12h & wait $${!}; done;'"
web:
build:
context: ./django
network: host
dockerfile: Dockerfile.prod
command: gunicorn --workers=5 --threads=10 config.wsgi:application --bind 0:8000
#volumes:
# - static_volume:/home/app/web/static
# - media_volume:/home/app/web/media
#- ../static:/home/app/web/static
#- ../media:/home/app/web/media
# ports:
# - 8000:8000
expose:
- "8000"
env_file:
- ./.env.prod
# depends_on:
# - db
# db:
# build:
# context: ./postgresql
# network: host
# dockerfile: Dockerfile.prod
# ports:
# - 5432:5432
# volumes:
# - postgres_data:/var/lib/postgresql/data/
# env_file:
# - ./.env.prod
redis:
build:
context: ./redis
network: host
dockerfile: Dockerfile.prod
ports:
- 6379:6379
rabbitmq:
container_name: rabbitmq_service
image: rabbitmq:3.7.14-management-alpine
env_file:
- ./.env.prod
ports:
- "5672:5672" # RabbitMQ Default Port
- "15672:15672" # UI Web을 위한 Port
# volumes:
# postgres_data:
# static_volume:
# media_volume:
반응형
'프로젝트 로그 > 테스트x솔루션 JIG 개발기' 카테고리의 다른 글
[라즈베리파이]이미지 파일 사이즈 줄이기 (0) | 2022.09.26 |
---|---|
[Python] 로컬 컴퓨터 NIC(Network Interface Card)의 IP, 서브넷 등 정보 확인 방법 (0) | 2022.08.01 |
[Docker-compose]nginx 수동 재 시작 (0) | 2022.07.21 |
[Docker-compose] 실행 중인 컨테이너 로그 확인 방법 (0) | 2022.07.20 |
[Django]쉘 스크립트에서 collectstatic 실행 시 yes 입력하는 방법 (0) | 2022.07.19 |