C10k 문제

C10k problem

C10k의 문제는 [1]동시에 다수의 클라이언트를 처리하기 위해 네트워크 소켓을 최적화하는 문제입니다.C10k라는 이름은 10,000개의 [2]연결을 동시에 처리하기 위한 수식어입니다.다수의 동시 접속을 처리하는 것은 초당 다수의 요구를 처리하는 것과는 다른 문제입니다.즉, 초당 다수의 요구를 처리하는 경우에는 높은 throughput(빠른 처리)이 필요한 반면, 동시 접속은 고속일 필요는 없지만 효율적인 접속 스케줄링이 필요합니다.

소켓 서버 최적화 문제는 웹 서버가 많은 클라이언트를 지원할 수 있도록 하기 위해 많은 요소를 고려해야 하기 때문에 연구되어 왔습니다.여기에는 운영 체제의 제약과 웹 서버 소프트웨어의 제한이 조합되어 있을 수 있습니다.이용할 수 있는 서비스의 범위와 운영체제의 기능 및 멀티 프로세싱 기능 등의 하드웨어 고려사항에 따라 멀티 스레드 모델 또는 단일 스레드 모델이 선호될 수 있습니다.메모리 관리(통상, operating system 관련)에 관한 고려가 수반되는 이 측면과 동시에, [2]I/O 관리의 매우 다양한 측면과 관련된 전략이 암시됩니다.

역사

C10k라는 용어는 소프트웨어 엔지니어 Dan Kegel에 [3][4]의해 1999년에 만들어졌습니다.이거는 Simtel FTP 호스트인 cdrom.com가 그 [1]해에 1기가비트/초이더넷을 통해 10,000개의 클라이언트를 동시에 서비스하고 있다는 것을 인용한 것입니다.이 용어는 이후 다수의 클라이언트에 대해 일반적으로 사용되고 있으며, 다수의 접속에 대해서도 같은 수치의 이름이 사용되고 있습니다.최근에는 2010년대에 "C10M"이 1,000만 동시 [5]접속을 나타내고 있습니다.

2010년대 초까지 단일 범용 1U 랙 마운트 서버에서 수백만 개의 연결이 가능해졌습니다. 200만 개 이상의 연결(WhatsApp, 24개 코어, FreeB에서 Erlang 사용)SD),[6][7] 1,000만~1,200만 연결(Migratory Data, 12코어,[5][8] Linux에서 Java 사용).

접속 수가 매우 많은 일반적인 어플리케이션에는 일반적인 퍼블릭 서버 또는 가상 프라이빗 네트워크를 통해 이들 서버에 스파스 오피스가 접속되어 파일 서버, FTP 서버, 프록시 서버, 웹 서버, 부하 등 한 번에 수천 또는 수백만 명의 사용자에게 서비스를 제공해야 하는 매우 큰 기업의 프라이빗 서버가 있습니다.밸런서 등입니다.[9][5]

「 」를 참조해 주세요.

레퍼런스

  1. ^ a b "The C10K problem". Archived from the original on 2013-07-22.
  2. ^ a b Liu, D.; Deters, R. (2009). "The Reverse C10K Problem for Server-Side Mashups". Service-Oriented Computing – ICSOC 2008 Workshops. Lecture Notes in Computer Science. Vol. 5472. p. 166. doi:10.1007/978-3-642-01247-1_16. ISBN 978-3-642-01246-4.
  3. ^ Andrew Alexeev (2012). "§14. nginx; §14.1. Why Is High Concurrency Important?". In Amy Brown; Greg Wilson (eds.). The Architecture of Open Source Applications, Volume II: Structure, Scale and a Few More Fearless Hacks. Lulu.com. ISBN 9781105571817. Around ten years ago, Daniel Kegel, a prominent software engineer, … Kegel's C10K manifest … solving the C10K problem of 10,000 simultaneous connections, nginx
  4. ^ Kegel, Dan (8 May 1999). "The C10K problem". Kegel com. Archived from the original on 8 May 1999. Retrieved 18 June 2019. And computers are big, too. You can buy a 500MHz machine with 1 gigabyte of RAM and six 100Mbit/sec Ethernet card for $3000 or so. Let's see - at 10000 clients, that's 50KHz, 100Kbytes, and 60Kbits/sec per client. It shouldn't take any more horsepower than that to take four kilobytes from the disk and send them to the network once a second for each of ten thousand clients. (That works out to $0.30 per client, by the way. Those $100/client licensing fees some operating systems charge are starting to look a little heavy!) So hardware is no longer the bottleneck.
  5. ^ a b c Mihai Rotaru (2015-05-20). "How MigratoryData solved the C10M problem: 10 Million Concurrent Connections on a Single Commodity Server". migratorydata.com. Retrieved 2021-10-15.
  6. ^ "1 million is so 2011". WhatsApp blog. 6 January 2012. Archived from the original on 1 May 2014. Retrieved 25 July 2019. This time we also wanted to share some more technical details with you about hardware, OS and software: hw.machine: amd64 hw.model: Intel(R) Xeon(R) CPU X5675 @ 3.07GHz hw.ncpu: 24 hw.physmem: 103062118400 hw.usermem: 100556451840
  7. ^ Reed, Rick (30 March 2012). "Scaling to Millions of Simultaneous Connections" (PDF). Erlang Factory. p. 7. Archived from the original (PDF) on 9 July 2012. Retrieved 25 July 2019.
  8. ^ Mihai Rotaru (2013-10-10). "Scaling to 12 Million Concurrent Connections: How MigratoryData Did It". migratorydata.com. Retrieved 2021-10-15.
  9. ^ Ponnuswamy Sadayappan; Manish Parashar; Ramamurthy Badrinath; Viktor K. Prasanna (2008). High Performance Computing - HiPC 2008. ISBN 978-3-540-89893-1. Retrieved 2021-10-15.