The C10K Problem

What is it?

The C10K Problem (“10,000 Connections”) refers to the challenge of building a server capable of handling 10,000 concurrent client connections efficiently on a single machine.

Coined by :contentReference[oaicite:0]{index=0} in 1999.


Why was it a Problem?

Traditional servers used:

1 Thread / Process per Connection

10,000 clients
= 10,000 threads
= huge memory + context switching overhead

This approach does not scale well.


Solution

Use:

  • Non-blocking I/O
  • Event loops
  • I/O multiplexing (select, poll, epoll, kqueue)
  • Async programming
1 Thread

Event Loop

10,000+ Connections

Technologies Inspired by C10K

  • :contentReference[oaicite:1]{index=1}
  • :contentReference[oaicite:2]{index=2}
  • Java NIO
  • Go goroutines
  • Netty
  • libuv

Interview Takeaway

The C10K problem demonstrated that thread-per-request architectures do not scale to massive concurrency. Modern systems solve this using non-blocking I/O, event loops, and asynchronous processing, allowing a small number of threads to handle thousands of simultaneous connections efficiently.