나는 단 한 명의 작업자로 nginx를 시작했습니다.
ps --forest -fC nginx
UID PID PPID C STIME TTY TIME CMD
root 3615889 10118 0 14:18 ? 00:00:00 nginx: master process nginx
nginx 3615890 3615889 0 14:18 ? 00:00:00 \_ nginx: worker process
두 프로세스 모두 포트 80에서 수신 대기합니다.
- pid=3615889가 주요 항목입니다.
- pid=3615890은 작업자입니다.
그렇다면 인터넷에서 요청이 오면 누가 처리하나요?
OSI 계층 관점에서 프로세스는 어떻게 작동합니까? 모든 요청이 주 서버로 전송된 다음 작업자에게 라우팅되거나 작업자가 요청을 독립적으로 처리할 수 있다고 가정하는 것이 잘못된 것입니까?
동일한 소켓(장치 #2151156)을 수신하는 두 프로세스에 대해 혼란스럽습니다.
sudo ss -ltnp | grep nginx
LISTEN 0 511 0.0.0.0:80 0.0.0.0:* users:(("nginx",pid=3615890,fd=8),("nginx",pid=3615889,fd=8))
LISTEN 0 511 [::]:80 [::]:* users:(("nginx",pid=3615890,fd=9),("nginx",pid=3615889,fd=9))
sudo lsof -i TCP:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 3615889 root 8u IPv4 2151156 0t0 TCP *:http (LISTEN)
nginx 3615889 root 9u IPv6 2151157 0t0 TCP *:http (LISTEN)
nginx 3615890 nginx 8u IPv4 2151156 0t0 TCP *:http (LISTEN)
nginx 3615890 nginx 9u IPv6 2151157 0t0 TCP *:http (LISTEN)