Programing

Nginx는 HTTP 요청을 어떻게 처리합니까?

lottogame 2020. 12. 26. 09:26
반응형

Nginx는 HTTP 요청을 어떻게 처리합니까?


Apache가 사용하는 스레드 구동을 이해합니다. 모든 연결이 스레드를 열고 응답이 전송되면 스레드가 닫히고 다른 스레드에 대한 리소스가 해제됩니다).

그러나 Nginx가 사용하는 이벤트 중심 디자인을 얻지 못했습니다. 이벤트 기반 설계에 대한 몇 가지 기본 사항을 읽었지만 nginx가 웹 요청을 처리하는 데 어떻게 사용되는지 이해하지 못합니다.

Nginx가 이벤트 기반 방식으로 연결을 처리하는 방법을 읽고 이해할 수 있으므로 이벤트 기반 디자인이 스레드 기반 디자인보다 낫다는 것을 받아들이는 것보다 더 나은 이유를 알 수 있습니다.


Nginx는 Reactor 패턴을 사용합니다 . 기본적으로 단일 스레드입니다 (하지만 여러 코어를 활용하기 위해 여러 프로세스를 포크 할 수 있음). 메인 이벤트 루프는 OS가 준비 이벤트를 알릴 때까지 기다립니다. 예를 들어 소켓에서 읽을 수있는 데이터가 버퍼로 읽어지고 처리됩니다. 단일 스레드는 수만 개의 동시 연결을 매우 효율적으로 제공 할 수 있습니다 (연결 당 스레드 모델은 엄청난 컨텍스트 전환 오버 헤드와 큰 메모리 소비로 인해 실패 할 수 있습니다. 각 스레드에는 자체 스택이 필요합니다) .

참조 URL : https://stackoverflow.com/questions/3436808/how-does-nginx-handle-http-requests

반응형