차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판이전 판
다음 판
이전 판
tech:c10k_problem [2014/02/11 01:31] V_Ltech:c10k_problem [2018/11/29 15:52] (현재) V_L
줄 1: 줄 1:
 +{{tag>c10k problem unix 소켓 개념 네트웤}}
 +======C10k Problem======
 +
 +
 +C10K Problem
 +
 +C10K Problem은 하나의 System에 얼마나 많은 Client가 붙을 수 있냐는 의문과 
 +그에 대한 도전에서 제기되는 문제이다 
 +
 +{{tech/client_net.jpg?300|}}
 +
 +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 모델을 출발로 해서 
 +여러가지 모델이 나오고 적용되고는 있다.
 +이 문제를 잘 해결해서 실제 잘 적용된 것은  MS Windows의 
 +Overlapped I/O와 IOCP이다.
 +
 +정리하자면 C10K Problem은 UNIX계열의 OS가 I/O 모델의 미비로 인해 제기된 것이다.
 +이는 현재 많은 해결책들이 나오고 있다 
 +
 +
 +
 +
 +참고 http://www.gpgstudy.com/forum/viewtopic.php?t=2097
 +
 + 
 +