[Nginx] 정리

Parker cho·2022년 6월 25일
0

DevOps

목록 보기
3/3

설계

참고링크: https://www.nginx.com/resources/library/infographic-inside-nginx/

https://livlikwav.github.io/study/NGINX-inside/

  • 대부분의 서버는 싱글쓰레드 프로세스 기반의 설계임
  • Nginx 는 이벤트 드리븐 형식의 아키텍처를 설계함으로서 수백, 수천개의 연결을 동시에 처리 할 수 있음

어떻게 동작하는가

  • 하드웨어 자원을 효율적으로 사용하기 위해 코어(cpu) 하나당 worker process를 하나 배정 함
  • 여러 요청을 하나의 worker 프로세스에서 즉시 switch (scheduling)함으로서 동시에 동작하는 것 처럼 보임

Infographic

  • 효율적으로 자원을 관리하기 위해 어떻게 프로세스를 생성하는가
  • 트래픽을 처리하기위해 상태 머신(state machine)을 사용함
  • non-blokcing, event driven 아키텍처를 사용하여 다수의 상태 머신을 동시에 처리함

프로세스 구조

  • Master Process
    • cache loader
    • cache manager
    • worker (모든 일 다함)
      • connection

결론

  • 기존 웹 서버는 blocking 방식으로 동작해 많은 요청을 처리하기 힘들었다
    • 요청마다 thread 혹은 프로세스를 생성하여 처리하면 자원의 낭비가 심하고 context-switching 이 자주 일어나기 때문에
  • Nginx는 위와 같은 단점을 고정된 worker process를 두고 프로세스당 코어를 하나만 할당하여 context-switching 을 줄이고 Non blocking + event driven 방식을 채택해 남는 시간에 로드 밸런싱등 여러 기능을 수행 할 수 있게함
profile
true nobility is being superior to your former self

0개의 댓글