Marcio Cunha

Como usar o comando ss para monitorar conexões TCP no Linux

Cansado do netstat? Aprenda a usar o comando ss para visualizar soquetes TCP, identificar processos vinculados e medir latência de rede com muito mais performance.

Marcio Cunha•2 min
Também disponível em:EnglishEspañol
Resumo
  • O comando ss é a alternativa moderna ao antigo netstat, acessando informações diretamente do kernel com maior velocidade.
  • A filtragem de soquetes via ss permite isolar conexões baseando-se em estados, portas ou endereços IP com sintaxe simplificada.
  • Identificar o processo responsável por uma conexão aberta é vital para diagnosticar lentidões e vazamentos de recursos em servidores.
  • Parâmetros como -t, -u e -n são essenciais para focar exclusivamente no protocolo TCP e evitar consultas DNS demoradas.
  • A análise de métricas internas do protocolo TCP fornece indicadores valiosos de latência e saúde da conexão entre o servidor e o cliente.

Por que aposentar o netstat e adotar o ss?

Se você lida com administração de sistemas, provavelmente já utilizou o netstat para investigar portas abertas. Embora clássico, ele pertence ao pacote net-tools, que não recebe atualizações há anos. O comando ss (do pacote iproute2) chegou para substituir esse veterano, sendo muito mais rápido e capaz de extrair informações detalhadas diretamente da estrutura interna do kernel Linux. Na prática, isso significa que em servidores sob carga, o ss consegue listar milhares de conexões em milissegundos, onde o netstat travaria processando textos legados.

Entendendo a sintaxe básica

O poder do ss reside na sua capacidade de filtrar resultados na origem, antes mesmo de exibir a saída na tela. Para listar todas as conexões TCP, usamos ss -t. Se você quer evitar que o comando tente resolver nomes de domínio (o que torna a execução lenta), adicione a flag -n. Para ver qual processo está segurando uma conexão, usamos o parâmetro -p. É a mesma lógica de quando precisamos diagnosticar problemas de performance, algo que discutimos detalhadamente em nosso guia sobre como usar o comando netstat no Linux, mas agora com uma ferramenta que escala melhor.

Filtrando conexões por estado

Um dos cenários mais comuns de troubleshooting é identificar o acúmulo de conexões em estados problemáticos, como SYN-RECV ou TIME-WAIT. O comando ss permite filtrar isso facilmente. Por exemplo, ss -t state established retorna apenas conexões vivas. Se o seu servidor está lento, pode haver uma fila de conexões pendentes que você pode visualizar rapidamente. Ao investigar, lembre-se que, além de rede, problemas de memória também causam instabilidade; veja como diagnosticar erros de OOMKill no Kubernetes se o seu serviço estiver caindo sob carga.

Identificando processos e latência

Saber quem está usando qual porta é fundamental para segurança e diagnóstico. O comando ss -tp não apenas mostra os IPs e portas, mas também o ID do processo (PID) e o nome do executável. Além disso, o ss permite visualizar estatísticas internas de rede usando ss -ti, o que expõe métricas de congestionamento, como o RTT (Round Trip Time) e o tamanho da janela de envio. Estes dados são cruciais para entender por que a rede parece lenta para seus usuários finais, funcionando de maneira complementar a quem precisa otimizar recursos como vimos ao tratar de limitar a memória de containers com Cgroups v2.

Conclusão

A transição para o ss é um passo necessário para qualquer administrador de sistemas que busca modernizar seu kit de ferramentas de rede. Ele é mais eficiente, rico em detalhes e integra-se perfeitamente aos fluxos de trabalho modernos de automação e monitoramento de infraestrutura.

Dominar essas flags básicas permite que você identifique gargalos de conexão em segundos. Lembre-se que, no dia a dia, a observabilidade é o que separa um incidente resolvido rapidamente de um downtime prolongado.