Então, eu estou executando lsof -i | wc -l
periodicamente e está me dizendo que das 420 linhas, entre 240 e 255 estão no CLOSE_WAIT
estado. Como as conexões TCP entram nesse estado?
Devo estar preocupado e como devo solucionar isso?
(Eu ia editar a resposta do mikegrb, mas decidi que estava massacrando um pouco demais)
CLOSE_WAIT significa praticamente exatamente o que diz - o kernel está aguardando o processo local fechar seu descritor de arquivo antes de remover a entrada. A conexão TCP foi completamente interrompida e a extremidade oposta pode ter a impressão de que a conexão é finita, mas a extremidade está aguentando.
A única preocupação é que muitas entradas CLOSE_WAIT consomem memória do kernel e entradas da tabela descritor de arquivos, o que pode ser um problema se houver grandes pilhas delas. Se as entradas que você está vendo são transitórias, é provável que você esteja percorrendo muitasde conexões TCP, e você verá uma pequena fração delas no pequeno período de tempo entre o fechamento da conexão e o processo de fechamento do descritor de arquivo. Por outro lado, se eles são permanentes (as portas e os endereços IP não mudam com o tempo), algo está vazando nos descritores e precisa ser corrigido para que ele sempre feche o fds quando terminar com eles. Como o mikegrb disse, uma versão mais recente já pode ter corrigido o problema, portanto é provável que seja necessária uma pergunta na lista de discussão relevante ou no exame dos registros de alterações.
O estado CLOSE_WAIT significa que a outra extremidade enviou um segmento FIN para fechar a conexão. A conexão ainda está estabelecida. Está em um modo que você pode pensar em half-duplex, permitindo que essa extremidade libere quaisquer buffers, enviando os últimos bits de dados para a extremidade solicitando que a conexão seja fechada antes de fechar a conexão a partir dessa extremidade.
Se você tiver muitas conexões em CLOSE_WAIT, significa que o processo responsável não está fechando o soquete depois que entra em CLOSE_WAIT. Você pode usar o tcpdump, ou outras ferramentas de captura de tráfego de rede, para examinar os pacotes.
Veja também o processo responsável. Por curiosidade, qual é o processo responsável? Pode ter uma versão fixa mais recente disponível ou talvez seja hora de registrar um relatório de bug;)
fonte
se você opera em rede fraca, pode sintonizar:
ulimits
e via/proc
(em todo o sistema)/proc
fonte
Você provavelmente não está fechando um recurso (identificador de arquivo, conexão de rede) em algum lugar de um aplicativo em execução no servidor.
fonte