В приложениях, чувствительных к производительности, где задержки, вызванные алгоритмом Nagle, являются проблемой, часто проще просто полностью отключить алгоритм Nagle и эмулировать его пакетирование в программном обеспечении с помощью ввода-вывода с разборкой / сборкой (например, writev()
, либо путем реализациибуферизация в программном обеспечении, где это необходимо).В качестве дополнительного бонуса выполнение этого снимает некоторые накладные расходы на системные вызовы.
Кроме того, вы можете открыть два отдельных сокета и отключить Nagling на одном из них.Просто помните, что данные, отправленные на одном сокете, не обязательно синхронизируются с другим.