원문: http://tengine.taobao.org/book/chapter_02.html ngx
nginx가 시작된 후 프로세스 배경에는 마스터 프로세스와 여러 작업자 프로세스가 포함됩니다.
(터미널 nginx 명령은 마스터와 상호 작용)
마스터 프로세스는
- 외부 세계로부터 신호 수신
- 각각에 신호 보내기를 포함하여 작업자 프로세스를 관리하는 데 사용됩니다. 작업자 프로세스
- 작업자 프로세스의 실행 상태 모니터링
- 작업자 프로세스가 종료되면(비정상적인 상황에서) 새 작업자 프로세스가 자동으로 다시 시작됩니다
기본 네트워크 이벤트는 작업자 프로세스의 처리됨에 배치됩니다. 여러 작업자 프로세스는 P2P 방식으로 클라이언트의 요청을 놓고 동등하게 경쟁하며 각 프로세스는 서로 독립적입니다. 요청은 하나의 작업자 프로세스에서만 처리할 수 있으며 작업자 프로세스는 다른 프로세스의 요청을 처리할 수 없습니다.
처리 흐름
- 각 작업자 프로세스는 마스터 프로세스에서 분기됩니다. 마스터 프로세스에서는 수신해야 하는 소켓(listenfd)이 먼저 설정된 다음 분기됩니다. . 여러 작업자 프로세스
- 새 연결이 도착하면 모든 작업자 프로세스의 Listenfd를 읽을 수 있게 됩니다. 하나의 프로세스만 연결을 처리하도록 하려면 모든 작업자 프로세스가 receive_mutex를 가져옵니다
<.>뮤텍스를 잡는 프로세스는 listeningfd 읽기 이벤트를 등록하고 읽기 이벤트에서 accept를 호출하여 연결을 수락합니다. 작업자 프로세스가 연결을 수락한 후 요청을 읽고, 요청을 구문 분석하고, 요청을 처리하기 시작합니다. 데이터를 생성하고 클라이언트로 돌아가서 마지막으로 연결을 끊습니다.-
이 프로세스 모델의 이점
각 작업자 프로세스는 독립적인 프로세스이며 데이터를 생성하지 않습니다. 잠금이 필요하므로 잠금으로 인한 오버헤드를 절약합니다- 프로그래밍 및 문제 발견 시 훨씬 편리합니다
- 독립적인 프로세스를 사용해도 하나의 프로세스가 종료된 후에는 서로 영향을 미치지 않습니다. , 다른 프로세스는 계속 작동 중이며 서비스는 중단되지 않습니다. 마스터 프로세스는 신속하게 새 작업자 프로세스를 시작합니다
-
').addClass('pre-numbering').hide();
$(this).addClass('has-numbering').parent().append($numbering);
for (i = 1; i ').text(i));
};
$numbering.fadeIn(1700);
});
});
위 내용은 [읽기 노트] 내용의 측면을 포함하여 nginx 아키텍처 1_process 모델에 대한 예비 탐색을 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.