Nginx는 동시에 많은 수의 동시 요청을 처리할 수 있는 고성능 웹 서버입니다. 다중 프로세스 메커니즘과 비동기 메커니즘을 결합한 비동기 메커니즘은 비동기 비차단 방식을 사용합니다.
(추천 튜토리얼: nginx 튜토리얼)
다음은 Nginx의 멀티스레딩 메커니즘과 비동기 비차단 메커니즘을 소개합니다.
1. 다중 프로세스 메커니즘
서버가 클라이언트를 수신할 때마다 서버 마스터 프로세스는 클라이언트와 연결을 설정하고 연결이 끊어질 때까지 상호 작용하는 하위 프로세스(작업자 프로세스)를 생성합니다. 하위 프로세스가 종료됩니다.
프로세스 사용의 장점은 각 프로세스가 서로 독립적이고 잠금이 필요하지 않다는 점입니다. 이는 잠금 사용이 성능에 미치는 영향을 줄이고 프로그래밍 복잡성과 개발 비용을 줄여줍니다.
둘째, 독립적인 프로세스를 사용하면 프로세스가 서로 영향을 미치는 것을 방지할 수 있습니다. 한 프로세스가 비정상적으로 종료되면 다른 프로세스는 정상적으로 작동하며, 서비스가 중단되지 않도록 마스터 프로세스는 신속하게 새로운 작업자 프로세스를 시작합니다. .
단점:
운영 체제에서 하위 프로세스를 생성하려면 메모리 복사 및 기타 작업이 필요하므로 리소스와 시간에 특정 오버헤드가 발생합니다. 요청 수가 많으면 시스템 성능이 저하됩니다.
2. 비동기식 비차단 메커니즘
각 작업자 프로세스는 비동기식 비차단 모드를 사용하며 여러 클라이언트 요청을 처리할 수 있습니다.
작업 프로세스가 클라이언트의 요청을 받으면 처리를 위해 IO를 호출합니다. 결과를 즉시 얻을 수 없으면 다른 요청을 처리하며(즉, 비차단) 클라이언트는 응답을 기다릴 필요가 없습니다. 이 기간 동안 다른 작업(즉, 비동기식)을 처리할 수 있습니다.
IO가 반환되면 이 작업자 프로세스에 알림이 전달되고 클라이언트 요청에 응답하기 위해 현재 처리 중인 트랜잭션을 일시적으로 중단합니다.
위 내용은 Nginx가 HTTP 요청을 처리하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!