C10k Problem
   HOME

TheInfoList



OR:

The C10k problem is the problem of optimizing
network socket A network socket is a software structure within a network node of a computer network that serves as an endpoint for sending and receiving data across the network. The structure and properties of a socket are defined by an application programming ...
s to handle a large number of clients at the same time. The name C10k is a
numeronym A numeronym is a number-based word. Most commonly, a numeronym is a word where a number is used to form an abbreviation (albeit not an acronym or an initialism). Pronouncing the letters and numbers may sound similar to the full word, as in " K9" ( ...
for concurrently handling ten thousand connections. Handling many concurrent connections is a different problem to handling many
requests per second A web server is computer software and underlying hardware that accepts requests via HTTP (the network protocol created to distribute web content) or its secure variant HTTPS. A user agent, commonly a web browser or web crawler, initiates ...
: the latter requires high throughput (processing them quickly), while the former does not have to be fast, but requires efficient scheduling of connections. The problem of socket server optimisation has been studied because a number of factors must be considered to allow a web server to support many clients. This can involve a combination of operating system constraints and web server software limitations. According to the scope of services to be made available and the capabilities of the operating system as well as hardware considerations such as multi-processing capabilities, a multi-threading model or a
single threading In computer science, a thread of execution is the smallest sequence of programmed instructions that can be managed independently by a scheduler, which is typically a part of the operating system. The implementation of threads and processes dif ...
model can be preferred. Concurrently with this aspect, which involves considerations regarding memory management (usually operating system related), strategies implied relate to the very diverse aspects of the I/O management.


History

The term ''C10k'' was coined in 1999 by software engineer Dan Kegel, citing the
Simtel Simtel (sometimes called Simtelnet, originally SIMTEL20) was an important long-running archive of freeware and shareware for various operating systems. The Simtel archive had significant ties to the history of several operating systems: it was in ...
FTP host, cdrom.com, serving 10,000 clients at once over 1
gigabit per second In telecommunications, data-transfer rate is the average number of bits (bitrate), characters or symbols (baudrate), or data blocks per unit time passing through a communication link in a data-transmission system. Common data rate units are multi ...
Ethernet Ethernet () is a family of wired computer networking technologies commonly used in local area networks (LAN), metropolitan area networks (MAN) and wide area networks (WAN). It was commercially introduced in 1980 and first standardized in 198 ...
in that year. The term has since been used for the general issue of large number of clients, with similar numeronyms for larger number of connections, most recently "C10M" in the 2010s to refer to 10 million concurrent connection. By the early 2010s millions of connections on a single commodity 1U rackmount server became possible: over 2 million connections (
WhatsApp WhatsApp (also called WhatsApp Messenger) is an internationally available freeware, cross-platform, centralized instant messaging (IM) and voice-over-IP (VoIP) service owned by American company Meta Platforms (formerly Facebook). It allows us ...
, 24 cores, using Erlang on
FreeBSD FreeBSD is a free and open-source Unix-like operating system descended from the Berkeley Software Distribution (BSD), which was based on Research Unix. The first version of FreeBSD was released in 1993. In 2005, FreeBSD was the most popular ...
), 10–12 million connections (MigratoryData, 12 cores, using
Java Java (; id, Jawa, ; jv, ꦗꦮ; su, ) is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea to the north. With a population of 151.6 million people, Java is the world's List ...
on
Linux Linux ( or ) is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged as a Linux distribution, which ...
). Common applications of very high number of connections include general public servers, or private servers of very big companies whose sparse offices are connected to those servers via their
virtual private network A virtual private network (VPN) extends a private network across a public network and enables users to send and receive data across shared or public networks as if their computing devices were directly connected to the private network. The be ...
s, that have to serve thousands or even millions of users at a time, such as
file server In computing, a file server (or fileserver) is a computer attached to a network that provides a location for shared disk access, i.e. storage of computer files (such as text, image, sound, video) that can be accessed by the workstations that are ab ...
s, FTP servers,
proxy servers In computer networking, a proxy server is a server application that acts as an intermediary between a client requesting a resource and the server providing that resource. Instead of connecting directly to a server that can fulfill a request ...
, web servers, load balancers, and so on.


See also

*
Event-driven architecture Event-driven architecture (EDA) is a software architecture paradigm promoting the production, detection, consumption of, and reaction to events. Overview An ''event'' can be defined as "a significant change in state". For example, when a consumer p ...
*
Event-driven programming In computer programming, event-driven programming is a programming paradigm in which the flow of the program is determined by events such as user actions ( mouse clicks, key presses), sensor outputs, or message passing from other programs or t ...
*
Reactor pattern The reactor design pattern is an event handling pattern for handling service requests delivered concurrently to a service handler by one or more inputs. The service handler then demultiplexes the incoming requests and dispatches them synchronous ...


References

{{Reflist, 2, refs= {{cite book , author= Andrew Alexeev , section-url= http://www.aosabook.org/en/nginx.html , section= §14. nginx; §14.1. Why Is High Concurrency Important? , editor1= Amy Brown , editor2= Greg Wilson , url= http://aosabook.org/en/index.html#aosa2 , title= The Architecture of Open Source Applications, Volume II: Structure, Scale and a Few More Fearless Hacks , publisher=
Lulu.com Lulu Press, Inc., doing business under trade name Lulu, is an online print-on-demand, self-publishing, and distribution platform. By 2014, it had issued approximately two million titles. The company's founder is Red Hat co-founder Bob Young. Lu ...
, publication-date= 2012 , isbn= 9781105571817 , quote= Around ten years ago, Daniel Kegel, a prominent software engineer, … Kegel's C10K manifest … solving the C10K problem of 10,000 simultaneous connections,
nginx Nginx (pronounced "engine x" ) is a web server that can also be used as a reverse proxy, load balancer, mail proxy and HTTP cache. The software was created by Igor Sysoev and publicly released in 2004. Nginx is free and open-source software ...
{{ Cite web , url = http://www.kegel.com/c10k.html , title = The C10K problem , access-date = 18 June 2019 , first = Dan , last = Kegel , date = 8 May 1999 , website = Kegel com , quote = 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. , archive-url = https://web.archive.org/web/19990508164301/http://www.kegel.com/c10k.html , archive-date = 8 May 1999 , df = dmy-all Web server software Computer performance