-
Notifications
You must be signed in to change notification settings - Fork 2
기능 정의
Laura edited this page Feb 7, 2022
·
9 revisions
-
설정 파일을 읽을수 있다.
-
thread pool과 event queue를 생성 할 수 있다.
-
woker, cache loader, cache manager를 생성할 수 있다.
-
config
- 컨피그 파일은 표준규격 사용
- nginx에 등록할 수 있는 server name 개수
- worker 개수
- access/error 로그 경로
-
공통으로 사용하는 multiplexing IO system call (함수 ex select epoll ..)에 자신을 등록 할 수 있다.
-
각 요청을 async하게 처리할 수 있다.
-
file read/write인 작업에 관련된 요청인 경우 thread pool에게 위힘 할 수 있다.(evnet queue)
- 위임 후 처리 과정(?)
-
sendfile 및 TCP_CORK를 지원 할 수 있다.
-
Loadbalance
- 알고리즘에 따른 행동 전략
-
config
- sendfile 이용 유무 및 TCP_CORK 설정 유무 flag
- kqueue|epoll|poll|select|/dev/poll
- worker가 이용할 수 있는 최대 file descriptor와 connection 개수 (default 1024)
- queue에서 event를 가져 올 수 있다.
- 완료된 작업에 대한 메시지를 보낼 수 있다(main loop?)
Cache Process
- Nginx Cache Process 는 Cache Loader와 Cache Manager 라는 두 개의 Process로 구성된다.
- 두 개의 Cache Process는 Master Process에 의해 실행된다.
- Config에 Path 설정이 있을 경우에만 실행된다.
- Cache의 Key와 Meta 정보를 공유 메모리(Shared Memory) 영역에 로드한다.
- Cache의 Data는 File에 저장된다.
- NGINX가 시작된 후 Master Process 에 의해 한 번만 실행된다.
- File로 저장된 Cache의 Data를 바탕으로 공유 메모리(Shared Memory) 영역에 Cache된 Key와 Meta를 설정하는 역할을 수행한다.
- 모든 캐시 정보가 한 번에 로드되면 많은 리소스를 소모하기 때문에 NGINX가 느려진다. 이를 방지하기 위해 아래 config를 사용할 수 있다.
- loader_threshold: 각 로드 실행 시간 지정
- loader_files: 매번 로드되는 최대 파일 수
- loader_sleeps: 각 로드의 지연 시간
- 주기적으로 실행되어 캐시 파일 저장소의 상태를 확인한다.
- Cache Size 및 Expiration 을 관리한다.
- TTL 적용
- LRU(Least Recently Used) 알고리즘에 의해 가장 나중에 이용된 Cache의 Data부터 삭제
- 요청에 의해 Cache Data를 찾을 수 있다.
- 데이터가 없는 경우 Cache Miss 를 보낸다.