우리의 응용 프로그램의 REST API는 (Gunicorn에 의해 제공됩니다 하지 전형적인 자동 스케일링 / 부하 분산 설치를 AWS EC2 인스턴스에서 실행 Nginx에 뒤에). 로드 밸런서의 유휴 시간 초과는 60 초이고 Gunicorn의 연결 유지 시간 초과는 2 초입니다. 504 Gateway Timeout
이 구성에서 산발적 인 반응 이 나타났습니다 . Amazon docs 에 따르면 서버의 연결 유지 시간 제한이로드 밸런서의 유휴 시간 제한 설정보다 낮기 때문일 수 있습니다.
원인 2 : 등록 된 인스턴스가 Elastic Load Balancing에 대한 연결을 종료합니다.
해결 방법 2 : EC2 인스턴스에서 연결 유지 설정을 활성화하고 연결 유지 제한 시간을로드 밸런서의 유휴 시간 제한 설정 이상으로 설정하십시오.
Nginx의 경우 기본값 keepalive_timeout
은 75 초이며 ELB 기본 설정과 잘 작동합니다. 그러나 Gunicorn 문서keepalive
는 1-5 초 범위의 설정을 권장합니다 .
Gunicorn의 keepalive를 75 초로 늘리는 것이 합리적입니까, 아니면 리버스 프록시를 사용하지 않더라도 5 초 미만으로 유지해야 할 이유가 있습니까?