Pergunta : Apache - problema de conexão do TCP do Tomcat - CLOSE_WAIT/FIN_WAIT_2

Olá!, o
We está funcionando Apache 6.0.20 na plataforma dos solaris 10. Eu estou começ um erro se eu funciono o exemplo do tomcat para longtime. Eu observei que este problema parte se eu reinicio Apache. O problema é os estados CLOSE_WAIT e FIN_WAIT_2 do TCP/IP que estão sendo criados cada vez que o usuário coneta e registra para fora. Se isto continua a acontecer então não mais usuário poderia conetar; Eu tenho que saltar Apache using o batente de apache2/bin/apachectl/começo (resolverá problemas do TCP/IP). Eu aprecio se você poderia me ajudar a resolver este issue.

admin@webserver: netstat - | grep 9034
*.9034 *.* 0 0 49152 0 LISTEN
127.0.0.1 .64130 127.0.0.1 .9034 49152 0 49152 0 CLOSE_WAIT
127.0.0.1 .9034 127.0.0.1 .64130 49152 0 49152 0 FIN_WAIT_2
127.0.0.1 .64131 127.0.0.1 .9034 49152 0 49152 0 CLOSE_WAIT
127.0.0.1 .9034 127.0.0.1 .64131 49152 0 49152 0 FIN_WAIT_2
127.0.0.1 .64132 127.0.0.1 .9034 49152 0 49152 0 CLOSE_WAIT
127.0.0.1 .9034 127.0.0.1 .64132 49152 0 49152 0 FIN_WAIT_2
admin@webserver: netstat - | grep 9044
*.9044 *.* 0 0 49152 0 LISTEN
127.0.0.1 .64127 127.0.0.1 .9044 49439 0 49152 0 CLOSE_WAIT
127.0.0.1 .9044 127.0.0.1 .64127 49152 0 49439 0 FIN_WAIT_2
127.0.0.1 .64128 127.0.0.1 .9044 49152 0 49152 0 CLOSE_WAIT
127.0.0.1 .9044 127.0.0.1 .64128 49152 0 49152 0 FIN_WAIT_2
127.0.0.1 .64129 127.0.0.1 .9044 49152 0 49152 0 CLOSE_WAIT
127.0.0.1 .9044 127.0.0.1 .64129 49152 0 49152 0 FIN_WAIT_2
class= do

Resposta : Apache - problema de conexão do TCP do Tomcat - CLOSE_WAIT/FIN_WAIT_2

As conexões em CLOSE_WAIT são geralmente um problema da aplicação. Eu vi muitas aplicações da computação distribuída que interagiram com as aplicações web causar CLOSE_WAIT. Observar que as conexões FIN_WAIT_2 são apenas o outro lado de uma conexão que esteja em CLOSE_WAIT.

CLOSE_WAIT é causado quando um lado da conexão tem fechado sua extremidade da conexão do TCP, mas o outro objetivo está ainda aberto. Em sistemas baseados no Unix, o soquete não é fechado até que o último processo que o manda abrir o feche. Isso significa que um ou outro a aplicação que o possui não está lendo o soquete (e assim não sabe que o outro extremidade fechado ele) nem apenas não está sendo closing ele, ou há um outro processo com esse mesmo soquete aberto.

Eis porque nós vemos este problema com computação distribuída. Tende a estar muitas conexões entrantes todo o tempo, e as linhas diferentes aceitam as conexões e bifurcam-se então fora de um processo novo para segurá-lo. Se entre a aceitação e a forquilha, uma outra conexão está aceitada, quando a forquilha acontece o segundo processo tem agora ambos os soquetes abertos, mas conhece somente aproximadamente um. Isso significa que o primeiro processo não pode fechar seu soquete até que o segundo processo retire. Se o segundo processo é vivida muito longa, então a conexão fura em CLOSE_WAIT.

Eu igualmente vi um caso onde houvesse uma condição de raça no usuário própria e os soquetes acumulassem lá.

Às vezes a computação distribuída ou os servidores de aplicações esperam que a aplicação está supor para fechar todos os soquetes não utilizados. Às vezes é apenas um erro em um dos três níveis.

O que você deve fazer é identificar que processo tem o soquete aberto. Você pode usar os pfiles chama (/proc cd; pfiles *) encontrar os processos envolveu. Tentar então figurar para fora se é um processo que tenha legìtima o soquete e não seja closing ele, ou se é um processo que não devesse o ter tido de todo. Isto dar-lhe-á uma idéia o que está indo sobre.
Outras soluções  
 
programming4us programming4us