Nginx/Gunicorn이 응답하는 데 너무 오래 걸림

Nginx/Gunicorn이 응답하는 데 너무 오래 걸림

Nginx를 통해 정적 파일을 제공하는 Django 앱 설정과 전용 서버에 있는 PSQL 데이터베이스로 Django 앱을 실행하기 위해 Gunicorn을 통해 실행되는 업스트림이 있습니다.
문제는 데이터베이스 방문이 필요하지 않은 홈페이지의 경우에도 사이트의 응답 시간이 너무 오래 걸린다는 것입니다.
주목해야 할 한 가지 중요한 세부 사항은 감독자 서비스(두 개의 프로세스, 하나는 건니콘과 다른 하나는 셀러리를 담당함)를 다시 시작하면 최대 3개의 요청에 대해 빠른 응답을 받는다는 것입니다.
3번의 요청 후에는 애플리케이션이 다시 응답하지 않게 됩니다.

구성의 경우, Nginx는 시간 초과(3개: 연결, 읽기, 보내기 모두)가 300으로 설정되어 구성됩니다.
Gunicorn은 동일한 시간 초과를 가지며 3개의 작업자가 실행되도록 구성됩니다.

애플리케이션은 단일 CPU와 1GB 메모리를 갖춘 VPS에서 실행됩니다.
아래는iostat기본 통계용.

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           1.49    0.00    0.44    0.03    3.21   94.83

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
xvda              0.74         3.23        12.79    1023355    4054257'

이 동작의 원인은 무엇입니까?

답변1

Tero Kilkanen의 의견에서 언급했듯이 문제는 코드 자체에 있는 것으로 나타났습니다.

나는 실시간 애플리케이션과 비슷한 느낌을 얻기 위해 요청으로 서버를 망치고 있었고 이로 인해 전체 서버가 다른 요청을 처리할 수 없게 되었습니다.
모든 지표에서 서버가 작업에 사용 가능한 것으로 나타났기 때문에 서버 통계를 보는 것은 문제를 설명하는 데 도움이 되지 않았습니다.

따라서 이러한 문제가 발생하면 짧은 간격 내에 여러 요청이 있는지 Nginx 로그를 살펴보세요.

관련 정보