O soquete permanece ESTABLISHED mesmo se o processo remoto estiver parado

1

Estou executando uma configuração celery - rabbitmq entre um cliente e um servidor. O processo do cliente abre uma conexão no servidor na porta 5672. Usando netstat -np no servidor, confirmo que, uma vez que o soquete reporta ESTABLISHED.

O processo no cliente caiu e não existe mais. Mas netstat -np ainda mostra a conexão ESTABLISHED. Eu também corro netstat -np no cliente e confirmo que nenhum processo tem conexão com o servidor naquela porta.

Por que o soquete permanece no status ESTABLISHED?

    
por Demetris 26.01.2016 / 16:29

1 resposta

1

O AMQP requer que o lado do servidor da conexão permaneça aberto se o cliente não fechar a conexão adequadamente (para tarefas de longa duração). Leia mais em este post .

Você pode fechar essas conexões manualmente usando rabbitmqctl ou escrever um script que faça isso para você a partir de uma tarefa cron, mas ambas são feias fora de abordagens para um problema no nível do aplicativo.

Se puder, ligue pulsação e defina o tempo limite para, digamos, 15-20% a mais do que sua tarefa de processamento mais longa conhecida. Isso deve reciclar essas conexões "inativas" após um tempo limite de pulsação, mas tenha cuidado, pois ele também desconectará qualquer cliente que esteja ocupado por muito tempo.

Mais sobre pulsação e rabbitmqctl (consulte a seção Diversos).

    
por 26.01.2016 / 20:45

Tags