У меня есть реализация HTTP-сервера на C #. Используя ab , я обнаружил странную проблему с производительностью. Каждый запрос занимал 5 мс при выключенном Keep-Alive, но 40 мс при включенном Keep-Alive!
Тестовая страница генерируется в виде одного байта [], который отправляется в качестве ответа с помощью одного вызова socket.Send.
Причина насколько я могу судить, алгоритм Нэгла используется в стеке TCP.
Пока что я использую свойство NoDelay в конце каждого обслуживаемого HTTP-запроса.
socket.NoDelay = true;
socket.NoDelay = false;
Что на данный момент решает проблему. Но у меня нет документации для резервного копирования моего открытия.
Это было протестировано в системе linux / mono.
Есть ли стандартный способ очистки TCP-соединения?
Этот ответ является обращаясь к той же проблеме. Разница здесь в том, что я хочу только временно отключить алгоритм.