Como diagnosticar porque uma porta está transmitindo um status “ZeroWindow”

1

Eu tenho dois servidores CentOS (um é um servidor de aplicativos, o outro é um banco de dados) se comunicando por uma porta. De vez em quando, o servidor de aplicativos começa a transmitir que a porta conectada ao banco de dados tem um status "ZeroWindow" (tamanho da janela de zero) (como visto via tcpdumps).

Quando isso acontece, a porta no servidor de banco de dados tem seu preenchimento de Q com bytes, já que nada está no lado do servidor de aplicativos que os está lendo.

Como posso saber o que está causando meu servidor de aplicativos para enviar a porta para este estado "ZeroWindow" quando isso acontece?

    
por Mara 17.04.2013 / 02:11

1 resposta

2

Uma porta não "transmite" uma janela zero. A janela de recepção de TCP (RWIN) é um atributo de uma conexão TCP. Com o RWIN, o receptor informa ao remetente quantos bytes ele pode receber em seu buffer. O remetente só enviará quantos bytes estiverem nesta janela antes de aguardar um ACK. Com o RWIN configurado como 0, o remetente não enviará mais pacotes até que o RWIN aumente novamente.

Um RWIN com tamanho 0 normalmente significa que o receptor não tem mais buffer disponível para receber dados da conexão TCP, talvez porque os dados não são coletados pelo aplicativo ou porque não são coletados com rapidez suficiente.

Portanto, você teria que depurar o aplicativo no lado dos receptores (servidor de aplicativos) para ver por que ele define o RWIN como zero.

Para começar, observe a saída de netstat -tpn e veja se o Recv-Q da conexão está aumentando ou se está em um número alto. Isso indicaria que os dados não são coletados pelo aplicativo (ou não são rápidos o suficiente). Depois disso, depende da aplicação.

    
por 18.04.2013 / 13:17