
여기 내 질문 과정에서대규모 요청을 보낼 때 프로덕션 서버는 로컬 테스트 서버보다 훨씬 느립니다.나는 웹서버, 특히 nginx가 실제로 무엇을 하는지 더 깊이 이해하려고 노력하고 있습니다. 기본적으로 오랫동안 당연하게 여겨왔던 건축을 더 잘 이해하고 싶다. 어쩌면 사소한 것일 수도 있지만 제 말을 들어주세요...
nginx와 gunicorn을 사용하여 django 앱을 실행 중이고 사후 요청을 서버에 보내고 있습니다. 나는 내 성능 문제가 어디에 있는지 이해하려고 노력하고 있으므로 내 요청이 어떻게 처리되는지 자세히 알고 싶습니다.
그래서 나는 라이브러리를 통해 POST 요청을 보내고 있습니다 requests
. 내가 아는 바로는 인터넷에서 전송되는 모든 데이터는 HTTP
-프로토콜을 사용하므로 기본적으로 내가 보내는 데이터는 텍스트 형식으로 전송됩니다. 옳은? 파이썬 객체/데이터 구조에 대한 코드 해석이 전혀 없나요? 그러면 nginx에 도달하는 요청의 크기는 텍스트 형식으로 변환된 요청의 크기에 불과합니까?
내가 이것을 더 잘 이해함에 따라 nginx는 이제 이 요청을 텍스트 형식으로 받은 다음 이 요청으로 무엇을 할지 결정합니다... 이 요청을 내 코드가 있는 내 웹(django) 애플리케이션(또는 더 나은 경우: 내 백엔드 서버)으로 전달합니다. 실행 중이고 데이터가 DB에 기록되는 위치입니다.
그러면 nginx는 요청만 전달하고 그게 다인가요? 아니면 다른 일을 합니까?
그런 다음 코드나 데이터베이스는 오류를 발생시키거나 nginx가 서버 출력(예: 404, 405, 201 또는 기타 코드...)으로 반환하는 성공 메시지를 nginx에 반환합니다.
그래서 내 질문은: nginx는 이러한 API 요청을 어떻게 처리하고 어떻게 해석합니까?
답변1
nginx는 단순히 요청을 백엔드 서버로 전달합니다. 클라이언트와 협상된 경우 압축을 제외한 데이터에 대한 추가 작업은 수행하지 않습니다.
99%의 경우 nginx에는 성능에 큰 영향을 미칠 수 있는 것이 없습니다. 성능 문제를 분석해야 하는 것은 실제 애플리케이션입니다.