Nginx 시리즈 기술 - 비동기 비 차단
$ pstree |grep nginx
|-+= 81666 root nginx: master process nginx
| |--- 82500 nobody nginx: worker process
| \--- 82501 nobody nginx: worker process
master 프로 세 스 1 개, work 프로 세 스 2 개 주의: Input / Output = = = I / O
요청 이 들 어 올 때마다 워 커 프로 세 스 가 처 리 됩 니 다.그러나 전과정 의 처리 가 아니 라 어느 정도 까지 처 리 했 을 까?상류 (백 엔 드) 서버 에 request 를 전송 하고 요청 이 돌아 오 기 를 기다 리 는 등 차단 이 발생 할 수 있 는 곳 으로 처리 합 니 다.그러면 이 처 리 된 워 커 는 이렇게 기다 리 지 않 을 것 입 니 다. 그 는 요청 을 보 낸 후에 "upstream 이 돌아 오 면 알려 주세요. 제 가 계속 하 겠 습 니 다" 라 는 이 벤트 를 등록 할 것 입 니 다.그래서 그 는 쉬 러 갔다.이것 이 바로 비동기 다.이때 리퀘스트 가 다시 들 어 오 면 그 는 곧 이런 방식 으로 처리 할 수 있다.이것 이 바로 비 차단 과 IO 다 중 재 활용 이다.상류 서버 가 돌아 오 면 이 사건 이 발생 하고 워 커 가 인수 할 수 있 으 며 이 request 는 계속 내 려 갈 수 있 습 니 다.이것 이 바로 비동기 반전 이다.
고객 (발송 자) 이 수금 원 (수신 자) 에 게 지불 (요청 발송) 한 후에 수금 원 이 거스름돈 을 찾 는 과정 에서 다른 일 도 할 수 있다. 예 를 들 어 전화, 채 팅 등 이다.한편, 수금 원 은 현금인출기 가 거래 (IO 조작) 를 처리 하 기 를 기다 리 는 과정 에서 고객 이 상품 을 포장 하 는 데 도움 을 줄 수 있 고 현금인출기 가 결과 가 나 오 면 수금 원 이 고객 에 게 계산 (요청 에 응) 을 해 줄 수 있다.네 가지 방식 중에서 이런 방식 은 발송 자 와 수신 자의 통신 효율 이 가장 높 은 것 이다.
동기 화 와 비동기 의 중점 은 메시지 알림 방식, 즉 결과 알림 을 호출 하 는 방식 이다.동기 화: 동기 호출 이 발 송 된 후에 호출 자 는 호출 결과 에 대한 통 지 를 기다 린 후에 야 후속 적 인 실행 을 할 수 있 습 니 다.비동기: 비동기 호출 이 발 송 된 후 호출 자 는 즉시 호출 결 과 를 되 돌려 받 을 수 없습니다.비동기 호출, 결 과 를 얻 으 려 면 보통 두 가지 방식 이 있 습 니 다. 1. 주동 적 으로 비동기 호출 결 과 를 문의 합 니 다.2. 피 호출 자 는 콜 백 을 통 해 호출 자 에 게 호출 결 과 를 알 립 니 다.
동시 택배: 샤 오 밍 은 택배 가 도착 할 것 이라는 문 자 를 받 고 아래층 에서 택배 가 도착 할 때 까지 기 다 렸 다.비동기 택배: 샤 오 밍 은 택배 로 보 낼 문자 메 시 지 를 받 고 아래층 으로 택배 한 후에 샤 오 밍 은 다시 내 려 가서 찾 습 니 다.비동기 로 택 배 를 찾 았 는데 샤 오 밍 은 택배 가 아래층 에 도착 하 는 데 두 가지 방식 이 있다 는 것 을 알 았 다. 1. 끊임없이 전화 로 택배 작은 형 이 도 착 했 는 지 물 었 다. 즉, 주동 적 으로 돌아 가면 서 물 었 다.2. 택배 작은 형 이 아래층 에 도착 한 후에 전 화 를 걸 어 샤 오 밍 에 게 알 린 다음 에 샤 오 밍 이 아래층 에서 택 배 를 찾 으 면 바로 연락 을 한다.
차단 과 비 차단 은 진 / 스 레 드 가 메 시 지 를 기다 리 는 행위 에 있 습 니 다. 즉, 메 시 지 를 기다 리 는 동안 현재 진 / 스 레 드 가 걸 려 있 습 니까? 아니면 걸 려 있 지 않 은 상태 입 니까?
택배 차단: 샤 오 밍 은 택배 가 곧 도착 할 것 이라는 메 시 지 를 받 고 아무 일 도 하지 않 고 택 배 를 기다 리 고 있 습 니 다.비 차단 택배: 샤 오 밍 은 택배 가 곧 도착 할 것 이라는 정 보 를 받 은 후에 택 배 를 기다 릴 때 코드 를 두 드 리 면서 위 챗 을 쓴다.
결론: 비동기 비 차단: 샤 오 밍 은 메 시 지 를 받 은 후에 웨 이 보 를 칠 하면 서 택배 기사 가 그 에 게 택 배 를 찾 으 라 고 통지 할 때 까지 기 다 렸 다.
select, poll, epoll 이 세 가지 모델
epoll () epoll 은 대량의 fd 를 더욱 효율적으로 검사 할 수 있 으 며, UNIX 에 서 는 유사 한 기능 의 kqueue 호출 을 제공 합 니 다.epoll 은 이벤트 poll 로 이해 할 수 있 습 니 다. 바 쁜 폴 링 과 무차별 폴 링 과 달리 I / O 스 트림 이벤트 가 연결 되 어 있 을 때 epoll 은 프로 세 스에 어떤 연결 이 I / O 스 트림 이벤트 가 발생 하 는 지 알려 주 고 프로 세 스 가 이 사건 을 처리 합 니 다.이때 우 리 는 이 흐름 에 대한 조작 에 모두 의의 가 있다.(복잡 도가 O (k) 로 낮 아 졌 고 k 는 I / O 사건 이 발생 하 는 흐름 의 개 수 를 위해 O (1) 라 고 생각 하 는 샤 오 밍 의 집 아래층 에 수발 실 이 있 는데 택배 가 도착 할 때마다 먼저 대리 수령 하고 표 시 를 했다.그리고 샤 오 밍 에 게 샤 오 밍 에 게 보 낸 택 배 를 찾 으 러 가라 고 통지 했다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
nginx 메 인 프로필 상세 설명user www www; #nginx , CPU 。 pid /var/run/nginx.pid; # nginx , ( ulimit -n) nginx , nginx , ulimit -n 。 # ,use [ kqueue ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.