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 overheadThis 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+ ConnectionsTechnologies 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.