AI Briefing

고전 돌아보기, C10K 문제 (C10K Problem)

·2023.12.01 02:00

핵심 내용

1만 명의 동시 접속을 처리하기 위한 C10K 문제의 정의와 이를 해결하기 위한 기술적 진화 과정을 살펴본다.

1 / 2

자세히 보기

1999년 Dan Kegel이 제기한 C10K 문제는 서버가 1만 명의 동시 접속자(Concurrent Users)를 어떻게 효율적으로 처리할 것인가에 대한 과제입니다.

과거에는 요청마다 프로세스를 fork()하거나 Thread를 생성하는 방식을 사용했습니다. 하지만 이 방식은 다음과 같은 한계가 있습니다.

  • 메모리 부족: 각 Thread마다 별도의 스택 메모리가 할당되어 대규모 접속 시 메모리 점유율이 급증합니다.
  • Context Switching 부하: Thread가 많아질수록 CPU 자원을 차지하기 위한 경합과 컨텍스트 스위칭 비용이 기하급수적으로 증가합니다.

이러한 문제를 해결하기 위해 Nonblocking I/O와 Asynchronous I/O 기술이 등장했습니다. Linux의 epoll, BSD의 kqueue, Windows의 IOCP 등이 대표적이며, 이러한 기술들은 현대의 고성능 웹 서버인 nginx와 Node.js의 핵심 동작 원리가 되었습니다.

이 한국어 요약은 AI가 자동으로 만들었습니다. 원문의 주장과 맥락은 원문에서 확인해 주세요. 저작권은 원저작자에게 있습니다.

AI 처리 방식을 확인하거나, 요약 오류와 출처 표기 문제, 삭제 요청을 문의 · 건의로 알려주세요.