C10k ( Eng. C10k; 10k connections - the problem of 10 thousand connections) is a conditional name for the task of configuring and maintaining a high-performance server capable of serving about 10 thousand connections at a time. Formally, the hardware of modern computers has the proper performance for the task, but inefficient algorithms can lead to the occurrence of "congestion".
Arose in 1999 as part of the task of servicing the popular at that time public FTP server , its administrator, Den Kegel, noticed that the serving node on the gigabit channel should be able to cope with a load of 10 thousand connections, but the software did not allow this.
A number of well - known web servers emphasize the solution to the C10k problem, including Nginx , Lighttpd , Cherokee HTTP Server , Tornado , Node.js , Yaws . Various techniques are used to circumvent the problem: pooling execution threads (instead of allocating a separate thread for each connection), using lightweight processes , supporting connection functions using exclusively user space (minimizing system calls to bypass the limitations of the operating system kernel ).
As of the mid-2010s, the mid-level server hardware node is capable of processing up to 10 million connections, and therefore software requirements have appeared to provide an appropriate level of performance in terms of the number of simultaneous connections, denoted as C10M .
Links
- C10k problem
- D. Liu, R. Deters. The Reverse C10K Problem for Server-Side Mashups // Service-Oriented Computing - ICSOC 2008 Workshops. - 2009. - T. 5472 (Lecture Notes in Computer Science) . - S. 166 . - ISBN 978-3-642-01246-4 . - DOI : 10.1007 / 978-3-642-01247-1_16 .