This is an old revision of this page, as edited by 200.120.73.176 (talk) at 12:22, 12 February 2014 (rm bracket). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
Revision as of 12:22, 12 February 2014 by 200.120.73.176 (talk) (rm bracket)(diff) ← Previous revision | Latest revision (diff) | Newer revision → (diff)The C10k problem is the problem of optimising network sockets to handle a large number of clients at the same time. The name C10k is a numeronym for concurrently handling 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. According to the scope of services to be made available and the capabilities of the O.S. as well as hardware considerations such as multi-processing capabilities, a multi-threading model or a single-threading model can be preferred. Concurrently with this aspect which involves considerations regarding memory management (usually O.S. related), strategies implied relate to the very diverse aspects of the I/O management.
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 nginx to solve the C10K problem)
- Lighttpd, which relies on an asynchronous architecture to handle requests
- Cherokee, a lightweight web server
- Tornado, a non-blocking web server and web application framework 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
- Mojolicious, a real time web application framework written in Perl.
- Node.js, asynchronous, non-blocking web server running on Google's V8 JavaScript engine
- 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 (web server), another very lightweight web server written in Erlang
- asyncore (in the standard Python library), a non-blocking web server library. It is based on Medusa, which is no longer maintained.
- Shrapnel, asynchronous, high performance cooperative threading library for Python.
- 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
- pyftpdlib, an extremely fast and scalable FTP server written in Python
- Xitrum, an async and clustered Scala web framework and HTTP(S) server based on Netty
- Django, some research is being done using the asynchronous IO support in Python 3.3.
- vibe.d (web framework), a simple asynchronous I/O web framework written in D
- ribs2, event-driven fibers ("ribbons") - "blocking" code simply becomes non-blocking.
There is a benchmark done for comparing the performance of various web frameworks supporting c10k solutions.
See also
References
- "The C10K problem". Archived from the original on 2013-07-28.
- ^ Attention: This template ({{cite doi}}) is deprecated. To cite the publication identified by doi: 10.1007/978-3-642-01247-1_16, please use {{cite journal}} (if it was published in a bona fide academic journal, otherwise {{cite report}} with
|doi= 10.1007/978-3-642-01247-1_16
instead. - Load Balancer Update
- nginx wiki
- Solution of lighttpd of C10k problem
- Cherokee project server homepage
- Tornado Web Server
- Netty: Home (Main.WebHome)
- node.js
- https://github.com/extend/cowboy extend/cowboy
- https://github.com/aaugustin/django-c10k-demo
- http://vibed.org
- http://maxim.livejournal.com/392971.html