티스토리 뷰

웹개발/Linux

NGINX 란 ?

yaku 2014. 1. 22. 11:32

C10K PROBLEM : 하나의 웹서베 10,000개의 클라이언트 접속을 동시에 달룰 수 있는 기술적 문제

C10K problem(하나의 웹서버에 10,000개의 클라이언트 접속을 동시에 다룰 수 있는 기술적 문제)을 해결하기 위해 기존의 아파치 방식처럼 하나의 스레드에서 하나의 클라이언트 요청을 처리하는 것이 아니라 Event-driven(Asynchronous) 구조를 사용한다. NGINX 이외에도 Lighttpd, Tornado, Magnum, Aleph 등 최근에 개발된 많은 웹서버들과 서버 사이드 자바스크립트인 Node.js가 Event-driven 구조를 사용하고 있다.


Event-driven Architecture(EDA a.k.a Asynchronous)

EDA 방식은 기존의 아파치 웹서버가 사용하는 방식(하나의 스레드에서 하나의 클라이언트를 처리하는 방식)보다 훨씬 적은 스레드개수로 훨씬 많은 클라이언트를 처리할 수 있다. 아파치 웹서버처럼 하나의 스레드에서 하나의 클라이언트를 처리한다면 'accept'와 persistence layer에서 정보를 읽거나 쓴 후 가공해 클라이언트에 전달할 때까지 I/O 문제로 스레드가 대기해야 할 때가 잦은 데다 클라이언트 개수만큼 스레드가 생성돼야 한다. 하지만 EDA 방식에서는 각 상태(state)를 정하고 여기서 event(가령 accept가 이루어져야 할 때 또는 응답 결과를 다 생성했을 때 등)가 발생할 때마다 이 event를 처리하게 해 더 적은 스레드로(또는 스레드 없이) CPU가 놀지 않고 일하게 할 수 있다.


nginx로 웹서비스 운영시 첨부파일 사용시에 413 Request Entity Too Large 가 뜨고 첨부 기능에서 용량이 차 올라가다가 멈춰버리는 증상이 발생합니다. 그럴때는 location 항목 하위에 client_max_body_size 항목을 추가해야 합니다. default size가 1m로 되어있어서 1Mbytes 이상의 용량을 업로드하려면 오류가 나게 되지요.

client_max_body_size 1024m;





'웹개발 > Linux' 카테고리의 다른 글

rm으로 삭제한 파일 복구하기  (0) 2014.02.26
KeepAlive 란 ?  (0) 2014.01.22
로그 시스템 (System Log ) 연구  (0) 2014.01.13
명령어 정리  (0) 2013.11.02
리눅스 파일검색  (0) 2013.10.30
댓글
D-DAY
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함