1. Nagle's Algorithm Causes Unnecessary Latency in Modern Networks
Users widely recommend disabling it via TCP_NODELAY=1 for games, SSH, RPCs, and chatty protocols, as bandwidth savings are negligible compared to delays.
- "Dumping the Nagle algorithm (by setting TCP_NODELAY) almost always makes sense and should be enabled by default." β anonymousiam
- "Disabling Nagle's algorithm should be done as a matter of principle, there's simply no modern network configuration where it's beneficial." β armitron
2. Legacy Hardware and Unmaintained Apps Justify Keeping It as Default
Discussions highlight industrial, medical, and old devices (e.g., 10Mbps Ethernet, PLCs) that benefit from batching to avoid overwhelming shared networks.
- "Everyone is forgetting the no delay is per application and not a system configuration. Yep, old things will still be old and thatβs ok." β BikiniPrince
- "If you worked in an industrial setting, legacy tech abounds due to the capital costs of replacing the equipment it supports." β hylaride
3. Interaction with Delayed ACKs Is the Core Problem
Nagle + delayed ACKs create 40-500ms stalls; fixes include disabling one/both or app-level buffering.
- "You never want TCP_NODELAY off at the sending end, and delayed ACKs on at the receiving end." β Animats
- "The core issue with Nagleβs algorithm (TCP_NODELAY off) is its interaction with TCP Delayed ACK." β drfignewton