라벨이 엔진엑스인 게시물 표시

맥에 NginX 소스 설치하기

맥(El Capitan)에 NginX 설치하는 방법이다. 이 방법은 이곳을 참조하였습니다. http://kevinworthington.com/nginx-for-mac-os-x-el-capitan-in-2-minutes/ 먼저 디렉토리를 만들어야 합니다. sudo mkdir -p /usr/local/src cd /usr/local/src 그런 다음 pcre 다운로드 받아서 설치합니다. sudo curl -OL ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.37.tar.gz sudo tar xvzf pcre-8.37.tar.gz cd pcre-8.37 sudo ./configure --prefix=/usr/local sudo make sudo make install cd .. 이제 nginx를 다운로드 받아 설치합니다. sudo curl -OL http://nginx.org/download/nginx-1.9.9.tar.gz sudo tar xvzf nginx-1.9.9.tar.gz cd nginx-1.9.9 sudo ./configure --prefix=/usr/local --with-cc-opt="-Wno-deprecated-declarations" --with-pcre=../pcre-8.37 sudo make sudo make install 실행파일의 위치는 이곳입니다. sudo /usr/local/sbin/nginx 소스파일을 수정하려면 Finder에서 접근해야합니다. 전 링크를 하나 만들어서 바탕화면에 떨쳐 놓았습니다. Finder - 이동 - 폴더로 이동을 클릭한 다음 /usr/local 를 입력하고 엔터를 치시면 디렉토리가 열립니다. 이걸 가상본을 만들어서 이동시키면 링크파일이 됩니다. 이제 맥에서 엔진엑스를 구동해보세요.

대량접속 웹서버 구성방안

접속자가 많을 경우 웹서버 구성빙안에 대해서 자료를 수집해본 결과이다. 십여년을 넘게 다양한 웹서버를 구성하고 운영해 왔지만 세션이 10,000을 넘는 경우는 없었다. 폭주한다고 한게 보통 5,000이상이었으나 10,000을 넘는 경우를 경험하기는 쉽지 않았다. 보통은 한대의 웹서버를 운영하고 웹서버 튜닝을 통해 해결을 시도한다. 아파치는 프로세스 모드에서 3,000을 버티다 죽는 경우가 발생하여 스레드 모드로 변경하니 8,000까지 무리없이 작동되는걸 경험하였다. 하지만 최근의 상황은 다르다. 40만 이상의 세션을 무리없이 처리해야 한다. 서버당 12,000 ~ 18,000정도의 세션이 가능하다고 하는데 그건 서버사양에 따라 프로세스 방식일 경우의 이야기 같다. 아파치 스레드 모드는 더 많은 세견을 처리할꺼 같고 엔진엑스의 경우 홈페이지에 서버당 백만세션을 처리 가능하다고 표기해 놓고 있다. 내 생각엔 엔진엑스가 답인거 같다. 또한 서버를 병렬로 구성할 때 보통 L4장비를 통해 구성하지만 Round robin DNS 방식을 사용하면 저렴하게 병렬구성이 가능하다. 그래도 안심이 안된다면 CDN 서비스가 있다. 이 서비스는 분산되어 있는 IDC에 트래픽을 나누어 주는 서비스로 클라이언트에서 가장 가까운 서버로 연결을 해주는 서비스로 올림픽때 영상서비스 같은 경우 사용한다. 처음엔 어떻게 하지..., 대형 포털은 어떻게 구성 되어 있을까? 등등 많은 의문을 가졌지만 이제는 어느정도 환해진 기분이다. 이제 적용하는 일만 남았는데 엔진엑스가 너무 강력해서 비용이 많이 안들어 과연 의견이 채택될지 의문이다.

Nginx (엔진엑스) 에 대하여

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