Socket “Flush” ativando temporariamente o NoDelay

Fund

Tenho uma implementação de um servidor HTTP em c #. Usando ab Eu descobri um problema de desempenho estranho. Cada solicitação levou 5 ms com o Keep-Alive desativado, mas 40 ms com o Keep-Alive ativado!

A página de teste é gerada em um único byte [] que é enviado como resposta usando um único soquete. Enviar chamad

A causa é, até onde eu sei, o algoritmo de Nagle usado na pilha TC

TCP Flush?

té agora estou usando o NoDelay propriedade no final de cada solicitação HTTP atendid

socket.NoDelay = true;
socket.NoDelay = false;

O que resolve o problema por enquanto. Mas não tenho documentação para fazer backup da minha descoberta.

Este foi testado em um sistema linux / mon

Existe uma maneira padrão de liberar a conexão TC

Related

Esta resposta está resolvendo o mesmo problema. A diferença aqui é que pretendo desativar temporariamente o algoritmo.

questionAnswers(4)

yourAnswerToTheQuestion