C10k problem: Difference between revisions
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
{{Citation style|date=January 2013|details=Violates Wikipedia:External links: "Wikipedia articles may include links to web pages outside Wikipedia (external links), but they should not normally be used in the body of an article."}} |
{{Citation style|date=January 2013|details=Violates Wikipedia:External links: "Wikipedia articles may include links to web pages outside Wikipedia (external links), but they should not normally be used in the body of an article."}} |
||
{{Primary sources|date=January 2010}} |
{{Primary sources|date=January 2010}} |
||
The '''C10k problem'''<ref name=C10K>[http://www.kegel.com/c10k.html The C10K problem]</ref> refers to the problem of optimising [[socket server]] software to handle a large number of clients at the same time (hence the name C10k - [[Concurrent_computing|concurrent]] ten thousand connections). The problem of |
The '''C10k problem'''<ref name=C10K>[http://www.kegel.com/c10k.html The C10K problem]</ref> refers to the problem of optimising [[socket server]] software to handle a large number of clients at the same time (hence the name C10k - [[Concurrent_computing|concurrent]] ten thousand 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.{{elucidate|date=April 2011|reason=and those limitations are? Presumably max # of threads is at least part of it, given comments in the below section. Are there particular OSes that do or don't contribute to the problem?}} |
||
While there are some specialized web servers that can handle more than ten thousand client connections, most web servers currently handle at most ten thousand clients simultaneously. |
While there are some specialized web servers that can handle more than ten thousand client connections, most web servers currently handle at most ten thousand clients simultaneously. |
Revision as of 06:07, 29 January 2013
This article has an unclear citation style. The reason given is: Violates Wikipedia:External links: "Wikipedia articles may include links to web pages outside Wikipedia (external links), but they should not normally be used in the body of an article." (January 2013) |
The C10k problem[1] refers to the problem of optimising socket server software to handle a large number of clients at the same time (hence the name C10k - concurrent ten thousand 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.[further explanation needed]
While there are some specialized web servers that can handle more than ten thousand client connections, most web servers currently handle at most ten thousand clients simultaneously.
The problem's name is a numeronym for "ten thousand clients".[1]
Servers which address the problem
Several web servers have been developed to counter the C10K problem:
- nginx, which relies on an event-driven (asynchronous) architecture, instead of threads, to handle requests (WordPress.com uses[2] nginx to solve the C10K problem)[3]
- Lighttpd, which relies on an asynchronous architecture to handle requests[4]
- Cherokee, a lightweight web server[5]
- Tornado, a non-blocking web server and web application framework[6] written in Python (used by Facebook's FriendFeed)
- Apache AWF (retired, formerly Apache Deft), asynchronous, non-blocking web server running on the JVM
- JBoss Netty, a NIO client server framework which enables quick and easy development of network applications such as protocol servers and clients[7]
- Node.js, asynchronous, non-blocking web server running on Google's V8 JavaScript engine[8]
- EventMachine, an asynchronous, non-blocking web server running on Ruby EventMachine
- Yaws, a web server written in Erlang; profiting from Erlang's extremely lightweight processes.
- Cowboy, an other, very lightweight, web server written in Erlang[9]
- asyncore (in the standard Python library), a non-blocking web server library. It is based on Medusa, which is no longer maintained.
- IIS, Microsoft's flagship web server, through the use of asynchronous requests, as demonstrated by third-party components such as WebSync
- Jetty asynchronous Java servlet container
- Xitrum, an async and clustered Scala web framework and HTTP(S) server based on Netty