Back to Posts

Django: Truncated or oversized response headers received from daemon process 에러 해결법

Posted in python, django, tips

문제 발생 환경

  • OS: Ubuntu 16.04 LTS
  • Python 3.5.2
  • Django 2.0.2
  • Apache HTTPd 2.4
  • numpy / Pandas / pymssql 등 사용중

문제의 발생

장고 배포를 마친 뒤 배포 서버에 접속시 화면이 뜨지 않고 500에러가 났던 상황.

Timeout when reading response headers from daemon process 'djangoproject': /home/ubuntu/djangoproject/djangoproject/wsgi.py

에러 로그로 살펴보면 위와 같이 “Timeout when reading response headers from daemon process”이라는 문제가 발생했다.

문제 원인

Numpy나 Pandas와 같은 C 의존 라이브러리들은 파이썬 인터프리터 중 메인 인터프리터에서 사용해야 한다. 만약 mod_wsgi등을 통해 생성된 서브 인터프리터를 사용할 경우 GIL로 인한 Deadlock이 발생하거나 정확하지 않은 결과, 혹은 파이썬 인터프리터의 예기치 못한 종료를 유발할 수 있다.

해결법

따라서 WSGI Application에서 사용할 파이썬 인터프리터에다 시스템의 메인 인터프리퍼를 지정해주면 된다.

/etc/apache2/apache2.conf 경로의 파일 제일 아래에 아래 코드를 추가해준다.

WSGIApplicationGroup %{GLOBAL}

코드를 추가해 준 뒤 Apache2를 재시작(service apache2 restart)한다.

Refs

넥슨코리아 인텔리전스랩스 어뷰징탐지팀에서 파이썬으로 개발을 하고 있습니다.
파이썬 + 웹 + 데이터 + ... 여러 분야에 관심이 많습니다.
글에 대한 문의등 연락은 아래 메일로 연락주세요.

Read Next

PySpark: 손상된 parquet파일 무시하기