Scalability bottlenecks are those system aspects that serialize (or choke) parallel operations. With bottlenecks, the ability of the system to do more work in parallel drops; hence, a major design objective of scalable systems is to remove these bottlenecks.
To understand system bottlenecks, let's look at a couple of very interesting problems that were encountered by architects in the recent past:
- The C10K problem: A web server bottleneck observed with the Apache server.
- The Thundering Herd problem.