1만 명 동시 접속? C10K 문제와 비동기 I/O의 해답

by DD
2년 전
조회수 10

1999년 제기된 C10K 문제는 1만 명 동시 접속 서버 구현의 어려움을 제시함

Non-blocking I/O를 위한 epoll, kqueue, IOCP 등 다양한 기술이 등장함

Node.js의 이벤트 루프, Java NIO를 통해 비동기 I/O를 쉽게 구현 가능

C10K 문제의 본질: 동시성 처리

C10K 문제는 1만 명 동시 접속을 효율적으로 처리하는 데서 시작한다. 구체적으로, 전통적인 프로세스/스레드 기반 방식은 메모리 사용량 증가Context Switching 오버헤드로 인해 성능 저하를 야기한다. 따라서 Non-blocking I/O를 통해 자원 효율성을 높여야 한다.

비동기 I/O의 핵심 기술: epoll, kqueue, IOCP

epoll, kqueue, IOCP는 Non-blocking I/O를 구현하는 핵심 기술이다. epoll은 Linux, kqueue는 BSD, IOCP는 Windows에서 사용된다. 따라서 이러한 기술들은 소켓 이벤트 관리를 효율적으로 처리하여 RPS(Request per Second) 향상에 기여한다.

Node.js와 Java NIO: 현대적 해결책

Node.js는 epoll을 기반으로 한 이벤트 루프를 통해 비동기 처리를 지원한다. Java는 NIO(New I/O)를 통해 Non-blocking I/O와 Zero-copy를 제공한다. 결과적으로, Netty와 같은 프레임워크를 통해 고성능 서버 구축이 가능하며, I/O 병목 현상을 해결한다.

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

댓글 0

첫 번째 댓글을 남겨보세요!