número de sessões HTTP = número de sessões TCP?

3

Eu tenho um software que tem um servidor HTTP escutando na porta 20001 e rodando em uma máquina Unix . O arquivo de log do servidor HTTP diz que atualmente tem 600+ HTTP de conexões ativas, porém netstat -an | grep 20001 na mesma máquina em que o servidor está em execução, mostra que há apenas 2 conexões TCP atualmente abertas. O servidor foi fornecido por uma empresa diferente e eles estão culpando nosso cliente pela grande quantidade de HTTP sessões. Eu acredito que eles não estão fechando as sessões corretamente.

Tanto quanto eu sei

number of active HTTP sessions = number of open TCP connections on the listening TCP port

Isso está correto? Se não, então quando não é este o caso?

EDITAR

Veja um exemplo das informações disponíveis no arquivo de log:

New Session F865432C-3enOjJetUTlIoBEtfYS9yNM0l+c
New Session F865432C-HJ71n4/nCda5o3WaxqlmKNUZH48
New Session F865432C-VOWUYv/wtr7QXvxGqWPFyr/JI1o
New Session F865432C-icsmvyEcsmhM0zbzPTAepfQWc4U
New Session F865432C-K+iPSJswA85YnAJNEzSa9VIdpAQ
New Session F865432C-6L5Rp+net1JEgZeX2QSiLLW9U2g
New Session F865432C-WnVQC/9ROqO50LacYDorNgB+PVk
New Session F865432C-X81QIytjaLCtLioVvqRTJYOHqtk
New Session F865432C-qIkjOoMbmr9FVWDZuZwdBA//rxs
New Session F865432C-N05q4gAjPJll6qRqxbFK09C6fNc
New Session F865432C-JC3B3mkuCnJTDFML2tTv7FPdpw8
New Session F865432C-UOGwlKaQmOawOFnBIIPRoU91GWI
New Session F865432C-Z5dWyXkfx7SsLKmujrl/3vfPYh8
New Session F865432C-w9iKm2QkDQeqZynM7hUtk/t/5Yg
New Session F865432C-uwYNGT7HcOLvuUv9F/KPCYnx3WU
New Session F865432C-b5wcRmaXMZhSPU0h6aDdPmiUdv8
New Session F865432C-I6uVQ914c7ZT+rnD5/LxA593pHg
New Session F865432C-HhUrc/IkIbM+kYXOW3sb9SqvYuo
End Session F865432C-n2VSOhW0ewjf2RnIyu2z5TkN+I8
End Session F865432C-dtvl9+4n7U+CBtS4oYAdKv4XSgM
New Session F865432C-0WCqPy9jx/ThzjoMk60wAtzRDeI
New Session F865432C-FUpkDVUqS8Zbj7CTy0Pak8/R5AE
New Session F865432C-/Nr/q60cezrsSCXaE/aJDHiAkGM
New Session F865432C-oie/wfNvpglo6UTOPNDpobkE5bI
New Session F865432C-FUO7GmbEm7gfRDmt1YRQFUgnQmg
End Session F865432C-d5jf2n9HlEheraUDu0bKR9FXb5w
End Session F865432C-d9ev8S+du/IcBr8GRyVyeWONdy4
End Session F865432C-s/d3x+vZKQ8Tnp1tHp0hfpmE6Is
End Session F865432C-xuOj1wPjVa/SFn5Sx3qvFZHW1Uo
End Session F865432C-pdZgBzd4aurZzj6it48AkA+kkbU
End Session F865432C-BW8/9/Nxp83drQh19AV96dH1SGE
New Session F865432C-2AOjAIe6lHTChy1uk2hqhM7WNRg
New Session F865432C-KkIUP6Fa0HNjyrfhfhlNvBq6Rv4
New Session F865432C-aSRpOiGNQxmW48QwanqzCQ+/ixU
New Session F865432C-KujVjcb0npH1ODXkGdLXKu70Qmo
New Session F865432C-GXB9itx4CmV9I4sUYi2y6V4qw+U

Como você pode, sem dúvida, notar, há muito mais "Novas Sessões" do que "End Sessions"!

    
por H_squared 18.01.2017 / 15:12

1 resposta

4

De acordo com esta página , uma sessão HTTP começa com uma solicitação HTTP para o servidor e termina com a resposta do servidor. Pode haver vários pares de solicitação-resposta em uma sessão TCP, mas sequencialmente, não ao mesmo tempo. Então, por esta definição, você deve ter:

number of TCP sessions >= number of HTTP sessions

(pode ser > porque uma sessão TCP pode ser mantida aberta depois que a resposta foi recebida do servidor HTTP)

Dito isto, o seu arquivo de log mostra que não há sessões HTTP. Essas são sessões de aplicativos. Como o HTTP é um protocolo sem estado, seu servidor HTTP define um cookie no navegador do usuário para que, quando eles retornarem, o aplicativo possa continuar de onde parou. BTW, F865432C-b5wcRmaXMZhSPU0h6aDdPmiUdv8 é provavelmente o conteúdo do cookie definido no navegador.

Cada cookie corresponde a uma sessão aberta. Existem dados associados a cada cookie; eles são armazenados no disco, no servidor. Para evitar que o disco seja preenchido, seu servidor HTTP (mais exatamente seu aplicativo) deve limpar periodicamente seu cookie jar para remover sessões inativas (cookies que não foram recebidos de um navegador por um determinado período de tempo).

Assim, quando seu aplicativo informa que existem mais de 600 sessões ativas, o que ele está dizendo é que existem mais de 600 cookies e dados associados em disco, não que existam mais de 600 conexões TCP simultâneas.

Se esse número aumentar continuamente, isso significa que os cookies não são coletados como lixo: isto é, nada está limpando os dados obsoletos da sessão no lado do servidor.

    
por 18.01.2017 / 15:52