Soquete do servidor sentado em FIN_WAIT_1 enquanto a rede não vê o tráfego

1

Estamos tentando entender um problema realmente esquisito, no qual podemos acessar uma página do Apache 2.2.19 no Solaris 10 e algumas permutações de solicitações de forma confiável levam vários tempos fixos para responder.

Parece ser baseado em torno do fechamento do soquete TCP, de um tcpdump no cliente, normalmente vemos uma pausa entre o servidor preenchendo a janela TCP com sua resposta pela última vez e o último bloco de dados ao longo com o FIN do servidor.

Então, no fio, apenas trava a transferência média da resposta HTTP, mas um netstat no servidor mostra um soquete em FIN_WAIT_1. Nós não podemos fazer um tcpdump no servidor para esclarecer, mas parece-nos que o sistema operacional transmitiu a conversa TCP para o hardware, por isso acredita que começou a 4way fechar, mas a NIC nunca coloca esse pacote, nem o excelente pacotes de dados (talvez 1 ou 2 @ 1500 bytes e um retardador de 400 ou qualquer outro).

Essa é a imagem mais limpa que podemos pintar, além de um teste recente que fizemos que parecia incrível ... um arquivo de 64076 bytes é servido pelo apache - atraso de 432ms para o último pacote. nós adicionamos UM char ao arquivo, e isso causou um pacote adicional a ser criado, 53 bytes que também incluíram o FIN, em oposição ao FIN de 52 bytes vazios que vemos no arquivo um pouco menor, aquele com o delay. A existência deste pacote extra estava mudando de forma confiável como aconteceu a conversa FIN, e fez a conversa passar de meio segundo para alguns milissegundos.

Mais tipicamente durante a vida de investigações, esse atraso foi de 4,6 segundos, novamente vemos o tamanho da janela flutuar, SACK está voltando ao Apache quando necessário, mas na última vez que a janela fica cheia, ela fica pendurada por 46 segundos. e depois vem um último 2 ou 3kb de dados, e o FIN que o Solaris acha que foi enviado há muito tempo.

Nossos tcpdumps estão em um F5 BigIP, então há um ASIC para o tráfego a ser percorrido, assim como um Cisco 6509 (somente L2), no entanto, vemos a mesma experiência do usuário ao fazer um wget em uma caixa vizinha do Solaris , então não acredite que é uma magia negra que o BigIP está fazendo.

Mas isso é tudo misturado com a confusão sobre tamanhos de janela e MSS e os gostos, mas se isso está soando familiar para alguém, todos nós somos ouvidos!

    
por Chris Phillips 11.12.2015 / 15:36

0 respostas