No servidor, é preciso confirmar quais portas estão abertas, em qual endereço e por qual processo. O comando netstat mostra as três informações.
As variações do comando
netstat -ano: lista todas as conexões e portas, com o número do processo responsável por cada uma, chamado PID;netstat -ano | findstr :3306: mostra apenas as linhas da porta 3306;netstat -ano | findstr LISTENING: mostra apenas os serviços à espera de conexões.
Nas opções, a letra a pede todas as conexões, a letra n pede endereços e portas em números, e a letra o acrescenta o PID.
Como ler uma linha
A linha TCP 0.0.0.0:3306 0.0.0.0:0 LISTENING 4820 se lê assim: protocolo TCP, serviço escutando em todas as interfaces na porta 3306, no estado LISTENING, executado pelo processo de número 4820.
O endereço local mostra o bind
0.0.0.0:3306: o serviço escuta em todas as interfaces e atende as estações.192.168.1.10:3306: o serviço escuta apenas na interface com esse endereço, o que também atende as estações.127.0.0.1:3306: o serviço escuta apenas no próprio computador, o que é um problema para o caixa e para os balcões.
Os estados das conexões
- LISTENING: o serviço está à espera de conexões. É o estado esperado no servidor.
- ESTABLISHED: a conexão está aberta, o que não garante que a aplicação funcione.
- SYN_SENT: o computador tentou abrir a conexão e ainda não recebeu resposta. Quando esse estado persiste, a tentativa tende a terminar por tempo esgotado.
- TIME_WAIT: a conexão foi encerrada há pouco tempo, o que é normal.
- CLOSE_WAIT: o outro lado encerrou a conexão, e o programa local ainda não encerrou a sua parte.
Muitas linhas em CLOSE_WAIT indicam um programa que não encerra as suas conexões. Muitas linhas em SYN_SENT indicam tentativas de conexão com um destino que não responde.
O programa dono da porta
O PID identifica o programa que usa a porta:
tasklist /fi "PID eq 4820": mostra o nome do programa com o PID 4820;netstat -abno: mostra, junto de cada conexão, o nome do programa responsável e exige o Prompt de Comando executado como administrador.
A aba Detalhes do Gerenciador de Tarefas também mostra o PID de cada programa.
No suporte
Uma porta ocupada por outro programa é uma causa real e pouco lembrada de uma conexão que abre, mas não funciona. O PID mostra qual programa está, de fato, na porta.
Para guardar
- O estado LISTENING indica um serviço à espera de conexões.
- O endereço local revela o bind do serviço.
- O PID identifica o programa dono da porta.
- Muitas linhas em SYN_SENT indicam um destino que não responde.
No servidor geral, a porta 9000 está no estado LISTENING, com o PID 4820, mas a sincronização não funciona. Qual é a próxima verificação?
Confirmar se o PID 4820 é mesmo o serviço de sincronização, com o comando tasklist /fi "PID eq 4820". Outro programa ocupando a porta faz a conexão abrir sem que a sincronização funcione.
No caixa 01, o netstat mostra várias conexões para 192.168.1.10:3306 no estado SYN_SENT. O que isso indica?
O caixa 01 está tentando abrir conexões com o banco de dados e não recebe resposta. O sintoma é de tempo esgotado, e as suspeitas são um firewall que descarta a conexão, um servidor desligado ou um endereço errado.