> 백엔드 개발 > PHP 튜토리얼 > [읽기 노트] nginx 아키텍처 사전 탐색 1_프로세스 모델

[읽기 노트] nginx 아키텍처 사전 탐색 1_프로세스 모델

WBOY
풀어 주다: 2016-07-29 09:04:56
원래의
1176명이 탐색했습니다.

원문: http://tengine.taobao.org/book/chapter_02.html ngx

[读书笔记]初探nginx架构 1_进程模型
nginx가 시작된 후 프로세스 배경에는 마스터 프로세스와 여러 작업자 프로세스가 포함됩니다.
(터미널 nginx 명령은 마스터와 상호 작용)

마스터 프로세스는

  • 외부 세계로부터 신호 수신
  • 각각에 신호 보내기를 포함하여 작업자 프로세스를 관리하는 데 사용됩니다. 작업자 프로세스
  • 작업자 프로세스의 실행 상태 모니터링
  • 작업자 프로세스가 종료되면(비정상적인 상황에서) 새 작업자 프로세스가 자동으로 다시 시작됩니다

기본 네트워크 이벤트는 작업자 프로세스의 처리됨에 배치됩니다. 여러 작업자 프로세스는 P2P 방식으로 클라이언트의 요청을 놓고 동등하게 경쟁하며 각 프로세스는 서로 독립적입니다. 요청은 하나의 작업자 프로세스에서만 처리할 수 있으며 작업자 프로세스는 다른 프로세스의 요청을 처리할 수 없습니다.

처리 흐름

  1. 각 작업자 프로세스는 마스터 프로세스에서 분기됩니다. 마스터 프로세스에서는 수신해야 하는 소켓(listenfd)이 먼저 설정된 다음 분기됩니다. . 여러 작업자 프로세스
  2. 새 연결이 도착하면 모든 작업자 프로세스의 Listenfd를 읽을 수 있게 됩니다. 하나의 프로세스만 연결을 처리하도록 하려면 모든 작업자 프로세스가 receive_mutex를 가져옵니다
  3. <.>뮤텍스를 잡는 프로세스는 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 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿