🐢 "Marc's Eternal #TCP_NODELAY Odyssey" 🚀: A riveting tale where every problem in distributed systems magically boils down to a single setting, solved by the protagonist's tireless quest through #AWS mythology. Spoiler alert: It's never the 1980s. 🌐
https://brooker.co.za/blog/2024/05/09/nagle.html #DistributedSystems #Myths #TechStories #HackerNews #ngated
It's always TCP_NODELAY. Every damn time. - Marc's Blog

It's always TCP_NODELAY. Every damn time. - Marc's Blog

[Перевод] Дело всегда в TCP_NODELAY

Занимаясь отладкой проблем в легаси-системах, я первым делом проверяю, включён ли режим TCP_NODELAY . И так делаю не только я. Все знакомые мне разработчики распределённых систем потратили немало часов на решение проблем с задержкой, которые быстро исправлялись простым включением этой опции сокета, указывая на ошибочность базовых настроек или использование устаревшей концепции. Но для начала давайте проясним, о чём вообще речь. Лучше всего нам в этом поможет документ RFC896 , изданный Джоном Нейглом в 1984 1 году. Вот описание задачи: Обработка малых пакетов сопряжена с одной специфичной проблемой. Когда для передачи односимвольных сообщений с клавиатуры используется TCP, обычно для отправки одного байта полезных данных задействуется пакет размером 41 байт (один байт данных и 40 байт заголовка). Такие издержки в 4 000%, конечно, раздражают, но в слабо нагруженных сетях ещё терпимы. Если коротко, то Нейгл хотел сократить затраты на отправку TCP-заголовков, чтобы повысить пропускную способность сети — вплоть до 40х! Эти крохотные пакеты поступали из двух основных источников: интерактивных приложений вроде оболочек, где пользователь вводил по одному байту за раз, и плохо реализованных программ, которые передавали сообщения ядру через множество вызовов write() . Предложенное Нейглом исправление оказалось простым и продуманным.

https://habr.com/ru/companies/ruvds/articles/890874/

#ruvds_перевод #tcp #tcp_nodelay #алгоритм_нейгла #delayed_ack

Дело всегда в TCP_NODELAY

Занимаясь отладкой проблем в легаси-системах, я первым делом проверяю, включён ли режим TCP_NODELAY . И так делаю не только я. Все знакомые мне разработчики распределённых систем потратили немало...

Хабр
🌖 總是 TCP_NODELAY。每一次都是。
➤ 網絡通信中的 TCP_NODELAY 問題
https://brooker.co.za/blog/2024/05/09/nagle.html
在分散式系統中,使用 TCP_NODELAY 來排除延遲問題已成為慣例。Nagle 算法並非現代系統所需,因為應用和流量結合的特性及現代硬體的能力。
+ 這篇文章清楚解釋了為什麼 TCP_NODELAY 對於現代系統是如此重要。
+ 有時候,應用原則便是需要根據現代技術及工具做出調整。
#網絡通信 #TCP_NODELAY
It's always TCP_NODELAY. Every damn time. - Marc's Blog