차이
문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판이전 판다음 판 | 이전 판 | ||
tech:c10k_problem [2014/03/19 02:37] – 바깥 편집 127.0.0.1 | tech:c10k_problem [2018/11/29 15:52] (현재) – V_L | ||
---|---|---|---|
줄 1: | 줄 1: | ||
+ | {{tag> | ||
+ | ======C10k Problem====== | ||
+ | |||
+ | |||
+ | C10K Problem | ||
+ | |||
+ | C10K Problem은 하나의 System에 얼마나 많은 Client가 붙을 수 있냐는 의문과 | ||
+ | 그에 대한 도전에서 제기되는 문제이다 | ||
+ | |||
+ | {{tech/ | ||
+ | |||
+ | BSD소켓을 설계할 당시에는 10K 클라이언트가 붙을 | ||
+ | 하드웨어적 환경이 안 되었다. ((만약, 웹서버가 동시에 10K 가 붙으면 | ||
+ | 일단 넷웍 대역만해도 기가비트 급이다. 소켓의 개념이 도입된 20년 전만해도 상상도 못 할 일이고, | ||
+ | 그외 그에 따른 리소스 관리를 감당할 하드웨어는 존재하지도 않았다 )) | ||
+ | |||
+ | |||
+ | 그 때는 하드웨어가 병목이었다만 | ||
+ | 80년대 말부터 학자들은 소프트웨어 위기론을 현실로 | ||
+ | 받아들여야 한다고 주장했다. | ||
+ | 하드웨어는 10년에 4배씩 좋아지지만, | ||
+ | 물론, 이 문제는 소프트웨어 공학에서 접근하는 문제제기이다. | ||
+ | |||
+ | UNIX계열 OS의 I/O Model가 2K 이상의 소켓을 열어서 정상적인 I/O를 할 수 있냐는 문제가 제기되었다. ((2048은 select()함수의 파라미터로 들어가는 File Descriptor 배열의 MAX값이다)) | ||
+ | |||
+ | UNIX계열에서는 File Descriptor를 만드는데 드는 비용과 | ||
+ | 그 많은 소켓을 동기화시키는 문제가 있다. | ||
+ | 즉, 10K만큼의 소켓을 열게 된다면 하드웨어가 충분한데도 불구하고 | ||
+ | OS에서 제공하는 I/O 처리방식의 문제때문에 프로세스가 제대로 | ||
+ | 처리하지 못한다는 것이 C10K Problem이다 | ||
+ | ((10K가 한계란 뜻은 아니고 많다는 뜻.)) | ||
+ | |||
+ | 이것이 C10K Project라고 함 해보자는 모드로 가서 | ||
+ | Solaris에서 제안한 /dev/poll 모델을 출발로 해서 | ||
+ | 여러가지 모델이 나오고 적용되고는 있다. | ||
+ | 이 문제를 잘 해결해서 실제 잘 적용된 것은 | ||
+ | Overlapped I/O와 IOCP이다. | ||
+ | |||
+ | 정리하자면 C10K Problem은 UNIX계열의 OS가 I/O 모델의 미비로 인해 제기된 것이다. | ||
+ | 이는 현재 많은 해결책들이 나오고 있다 | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | 참고 http:// | ||
+ | |||
+ | |||
+ | |||