목록 보기
gunicorn 설정의 A to Z
데브옵스

gunicorn 설정의 A to Z

화해
화해
2021년 6월 9일

두줄요약

Django용 WSGI 서버 Gunicorn의 프로세스 구조와 주요 설정을 정리했습니다. 워커·로깅·타임아웃 설정 시 운영 환경에서의 주의점도 설명합니다.

구조와 흐름

  • Python 웹 애플리케이션과 서버를 연결하는 WSGI 규약 및 Django의 wsgi.py
  • master process의 worker fork·관리와 worker의 애플리케이션 임포트·요청 처리
  • sync의 단일 커넥션 처리와 gevent coroutine 기반 다중 커넥션 처리

성능/운영 포인트

  • config 파일·명령행 설정 우선순위와 CPU 수 기반 workers 산정
  • preload_app, bind, backlog, pidfile, raw_env를 통한 실행 환경과 소켓 관리
  • max_requests와 jitter를 활용한 메모리 누수 완화 및 worker 재시작 분산

주의할 점

  • reload 상태에서 의존성 설치 전 worker 재시작 시 ModuleNotFoundError와 gunicorn 중단 위험
  • Django와 syslog 조합에서 dictConfig 호출에 따른 Bad file descriptor 오류 가능성
  • request-line 제한, timeout, backlog를 nginx·로드밸런서 등 앞단 설정과 함께 검토

적용해볼 점

  • check_config로 애플리케이션 임포트와 설정 오류 사전 검증
  • accesslog 기록을 위한 Django 로거 설정 및 info 수준 errorlog 활용
  • 강제 종료에 대비한 DB transaction 구성과 worker class·signal별 graceful_timeout 동작 검증

다음 읽기

#Django 주제를 다룬 다른 회사 글

HBase 오픈소스 전환을 위한 HBH(HitBase Handler) 개발기

CDH 의존을 줄이기 위해 HitBase 전환용 관리 도구 HBH를 개발한 과정을 공유했습니다. 설치 자동화, 프로세스 제어, 잡 실행, 설정 관리, 모니터링 기능을 단계적으로 구현했습니다.

라인
라인
백엔드

댓글 0개

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...