
Qual seria o motivo de muitos TIME_WAIT
aqui? Mesmo nós temos muito poucas conexões SYN ESTABELECIDAS.
[root@www ~]# netstat -natp | grep "210.XX.XX.XX:80" | awk '{print $6}' | sort | uniq -c
1 ESTABLISHED
12 FIN_WAIT2
9903 TIME_WAIT
Responder1
Para explicar isso, você precisa ter um bom entendimento das comunicações TCP/IP. Na forma mais simples, quando alguém se conecta ao seu servidor web, seu servidor assume que a conexão durará algum tempo e aloca uma porta para essa comunicação e define um tempo limite para esse canal de comunicação. O canal ou porta, como você vê na netstat
saída, entra no estado TIME_WAIT, se a pessoa do outro lado, ou seja, o cliente, parar de se comunicar. Talvez tudo que ele ou ela precisasse fosse olhar uma página e pronto. Mas o seu servidor não pode saber disso. Ele está operando sob a suposição de que esta comunicação levará muito tempo.
A razão pela qual isso acontece é principalmente porque é mais caro (em termos de recursos) estabelecer um novo canal de comunicação do que manter um existente, especialmente se o cliente fizer várias solicitações do seu servidor. Se você quiser se aprofundar e aprender mais sobre isso, há um artigo muito bom sobre isso aqui:http://www.serverframework.com/asynchronousevents/2011/01/time-wait-and-its-design-implications-for-protocols-and-scalable-servers.html
Se você está interessado em saber como se livrar deles ou evitar que aconteçam com tanta frequência e por que eles acontecem de forma resumida, aqui está outra página que você pode querer dar uma olhada:http://www.fromdual.com/huge-amount-of-time-wait-connections