Optimizing web servers for high throughput and low latency

This post details optimizations for web servers and proxies, focusing on hardware (CPU, NIC, Memory, Hard Drive), operating system low-level tunings (firmware, drivers, CPU governors, CPU affinity), and library/application-level tunings (specifically for Nginx). It discusses how to tune CPU performance for latency-sensitive vs. high-throughput tasks, NIC selection, memory requirements, and storage considerations. It also covers OS-level optimizations like using the 'performance' governor, disabling HT for latency-sensitive tasks, and utilizing tools like turbostat and cpupower. CPU affinity is discussed as a method to reduce latency by binding processes to cores, with considerations for potential performance degradation and monitoring with runqlat.
More from the Internal Load Balancing Service trail
- What’s new with Robinhood, our in-house load balancing service
- Atlas: Our journey from a Python monolith to a managed platform
- How we migrated Dropbox from Nginx to Envoy
- Enhancing Bandaid load balancing at Dropbox by leveraging real-time backend server load information
- Meet Bandaid, the Dropbox service proxy