Nginx (엔진엑스) 에 대하여
Nginx 는 웹서버이다.
보통 경량 웹서버라고도 한다.
소켓을 이용해서 통신을 하는데
소켓을 연결할 때 블로킹과 넌블로킹이 있다.
블로킹은 연결이 끝날때까지 제어권을 운영체제에 주지 않는 방식이고
넌 블로킹은 제어권을 운영체제에 주는 방식이다.
소켓이 연결되고 난 후 제어권이 운영체제에 넘어오지 않았을 경우
에러가 난다면...,
대략 난감한 상황이 벌어진다.
엔진 엑스는 넌블로킹 방식이다.
문제가 되는 세션은 잘라 버릴 수 있다는 것이다.
또, 프로세스와 스레드 방식이 있다.
프로그램이 실행이 되려면 프로세스를 얻어야 한다.
하지만 프로세스 하나를 자세히 보면
더 작은 부분으로 나눌 수 있는데 이를 스레드라 한다.
예를 들어 1부터 100까지 더하는 알고리즘에서
1부터 100까지 더하고 알고리즘에서 빠져 나올때까지가 프로세스이다.
하지만 더하는 도중에 결과를 실시간으로 보고 싶다면
스레드로 구성하면 가능하다.
이럴 경우 프로그래머의 능력이 필요하다.
엔진엑스는 스레드 방식이다.
속도면에서 넌블로킹과 스레드의 조합은 환상적이다.
기존의 구성에 변경을 주지 않고
앞단에 엔진엑스를 설치하고 프록시로 처리하기만 해도
속도향상이 이루어진다고 한다.
과연 그런지는 한번 해봐야 할 꺼 같다.
보통 경량 웹서버라고도 한다.
소켓을 이용해서 통신을 하는데
소켓을 연결할 때 블로킹과 넌블로킹이 있다.
블로킹은 연결이 끝날때까지 제어권을 운영체제에 주지 않는 방식이고
넌 블로킹은 제어권을 운영체제에 주는 방식이다.
소켓이 연결되고 난 후 제어권이 운영체제에 넘어오지 않았을 경우
에러가 난다면...,
대략 난감한 상황이 벌어진다.
엔진 엑스는 넌블로킹 방식이다.
문제가 되는 세션은 잘라 버릴 수 있다는 것이다.
또, 프로세스와 스레드 방식이 있다.
프로그램이 실행이 되려면 프로세스를 얻어야 한다.
하지만 프로세스 하나를 자세히 보면
더 작은 부분으로 나눌 수 있는데 이를 스레드라 한다.
예를 들어 1부터 100까지 더하는 알고리즘에서
1부터 100까지 더하고 알고리즘에서 빠져 나올때까지가 프로세스이다.
하지만 더하는 도중에 결과를 실시간으로 보고 싶다면
스레드로 구성하면 가능하다.
이럴 경우 프로그래머의 능력이 필요하다.
엔진엑스는 스레드 방식이다.
속도면에서 넌블로킹과 스레드의 조합은 환상적이다.
기존의 구성에 변경을 주지 않고
앞단에 엔진엑스를 설치하고 프록시로 처리하기만 해도
속도향상이 이루어진다고 한다.
과연 그런지는 한번 해봐야 할 꺼 같다.
댓글
댓글 쓰기