IT 관련
웹 서버, NGINX / APACHE
saml2l
2020. 5. 19. 15:36
- 웹 서버 (web server): HTTP 를 통해 웹 브라우저에서 요청하는 HTML 문서나 오브젝트(이미지 파일)을 전송해주는 서비스 프로그램.
- 웹의 전체 적인 프로토콜은 다음과 같다
- 방문자가 웹 주소에 있는 문서를 요청한다.
- 웹 주소에는 DNS 와 IP 시스템이 알맞은 컴퓨터에게 요청을 전달할수 있게 해준다.
- 이 컴퓨터는 요청받은 웹페이지를 호스팅 해주는 컴퓨터이며 방문자에게 웹페이지를 "serve" 해준다
- 웹 페이지는 기본적으로 HTML 문서이다. 각각 다른 웹페이지를 방문자에게 "serve" 하려면 컴퓨터는 서버 프로그램(server program) 이 있어야 한다. Nginx 와 Apache 같은 소프트어가 요청을 처리, 분석해서 관련된 문서를 방문자의 브라우저에서 열람 가능하게 해준다.
- NGINX 와 APACHE 는 사용자의 브라우저로 웹페이지를 전달해주는 웹서버이다.
APACHE
- APACHE 는 1995년에 등장
- 스레드 / 프로세스 기반 구조
- 클라이언트 요청 하나당 스레드 하나가 처리하는 구조.
- 쓰레드 thread: 프로세스 내에서 실행되는 여러 흐름의 단위
- 프로세스 vs 스레드 : 멀티프로세스와 멀티스레드는 양쪽 모두 여러 흐름이 동시에 진행된다는 공통점을 가지고 있다. 하지만 멀티프로세스에서 각 프로세스는 독립적으로 실행되며 각각 별개의 메모리를 차지하고 있는 것과 달리 멀티스레드는 프로세스 내의 메모리를 공유해 사용할 수 있다. 또한 프로세스 간의 전환 속도보다 스레드 간의 전환 속도가 빠르다.
- 요청이 많을수록 CPU와 메모리 사용이 증가하기 때문에 성능이 저하될 수 있다.
- 클라이언트 요청 하나당 스레드 하나가 처리하는 구조.
NGINX
- 프로그램의 흐름이 이벤트에 의해 결정이 되는 EventDriven 방식의 웹 서버
- Event Driven 처리 기반 구조는 여러 개의 커넥션을 모두 Event-Handler 를 통해 비 동식 방식으로 처리해 머저 처리되는 것 부터 로직이 진행되도록 한다.
- Event Driven : 요청에 대한 각 상태를 정해서 Event 가 발생할 때마다 event 를 처리
- NGINX 는 스레드를 많이 사용하지 않기 때문데 CPU 소모 낮음
- 적은 수의 스레드로 효율적인 일처리, 스레드당 할당되는 메모리도 적음
- Event Driven 처리 기반 구조는 여러 개의 커넥션을 모두 Event-Handler 를 통해 비 동식 방식으로 처리해 머저 처리되는 것 부터 로직이 진행되도록 한다.