← Guia Completo: Diagnóstico de Desempenho em VMs Windows

🌐 Componente: Rede. Problemas de rede em VMs Windows podem ter origem na configuração do adaptador virtual, no hypervisor, no switch físico ou em latência de infraestrutura. O diagnóstico deve ser sistemático: da camada mais baixa (adaptador/erros) para a mais alta (DNS, portas de aplicação).

Quando suspeitar de problema de rede?

  • Acesso a partilhas de rede, sites ou serviços lento mas local parece normal
  • Timeouts frequentes em aplicações cliente-servidor
  • Resolução de nomes lenta (DNS)
  • Ligações que caem e reconectam periodicamente
  • Velocidade de transferência muito abaixo do esperado

1. Estado das Interfaces de Rede

Primeiro passo: verificar o estado e os erros dos adaptadores.

# Estado de todos os adaptadores de rede
Get-NetAdapter | Select-Object Name, Status, LinkSpeed, MacAddress, DriverVersion | Format-Table -AutoSize
# Estatísticas de erros por interface
Get-NetAdapterStatistics | Select-Object `
    Name, ReceivedBytes, SentBytes,
    ReceivedDiscardedPackets, OutboundDiscardedPackets |
    Format-Table -AutoSize
🔴 Atenção: Os campos ReceivedDiscardedPackets e OutboundDiscardedPackets devem ser 0 ou muito próximos de 0. Valores crescentes indicam problemas de driver, configuração do adaptador virtual ou sobrecarga de rede.

2. Contadores PerfMon — Rede

Adicionar no Win+R → perfmon.exe:

Contador O que mede Limiar de alerta
\Network Interface(*)\Bytes Total/sec Tráfego total da interface Comparar com LinkSpeed
\Network Interface(*)\Packets Received Errors Erros de receção Deve ser 0
\Network Interface(*)\Packets Outbound Errors Erros de envio Deve ser 0
\TCPv4\Connections Established Conexões TCP ativas Crescimento anormal
\TCPv4\Connection Failures Falhas de ligação TCP Qualquer valor > 0 a crescer
\TCPv4\Segments Retransmitted/sec Retransmissões TCP > 0 indica perda de pacotes

3. Teste de Latência e Conectividade

# Ping básico com estatísticas (20 pacotes)
ping -n 20 8.8.8.8
# Traceroute para identificar hop com latência elevada
tracert -d 8.8.8.8
# PathPing — combina ping e traceroute com estatísticas de perda por hop
pathping -n 8.8.8.8
# Test-NetConnection — teste de porta TCP específica
Test-NetConnection -ComputerName servidor.empresa.pt -Port 443
Test-NetConnection -ComputerName servidor.empresa.pt -TraceRoute
💡 Sobre pathping: Aguarda 25 segundos por hop por defeito — é mais lento que o tracert mas fornece estatísticas de perda de pacotes por cada nó da rota, sendo muito mais informativo para problemas intermitentes.

4. Diagnóstico DNS

O DNS é frequentemente ignorado mas causa muita lentidão percebida — cada ligação a um serviço começa com uma resolução de nome.

# Testar resolução DNS
Resolve-DnsName google.com
# Ver servidores DNS configurados
Get-DnsClientServerAddress | Where-Object {$_.AddressFamily -eq 2} | Format-Table
# Medir tempo de resolução DNS
Measure-Command { Resolve-DnsName google.com } | Select-Object TotalMilliseconds
# Limpar cache DNS local
Clear-DnsClientCache

# Ver conteúdo atual do cache
Get-DnsClientCache | Select-Object Name, Type, TimeToLive | Format-Table
# Testar DNS com servidor específico
nslookup google.com 8.8.8.8
⚠️ Lentidão de DNS: Uma resolução DNS que demora mais de 100–200 ms será percetível pelo utilizador em aplicações web. Testar com Resolve-DnsName para o domínio dos servidores internos e comparar com um DNS público (8.8.8.8).

5. Conexões TCP Ativas e Portas em Uso

# Todas as conexões TCP estabelecidas com processo
Get-NetTCPConnection | Where-Object {$_.State -eq 'Established'} |
    Select-Object LocalAddress, LocalPort, RemoteAddress, RemotePort,
        @{N='Process'; E={(Get-Process -Id $_.OwningProcess -EA SilentlyContinue).Name}} |
    Sort-Object RemoteAddress | Format-Table -AutoSize
# Portas em escuta
netstat -ano | findstr LISTENING
# Estatísticas TCP detalhadas (retransmissões, resets, falhas)
netstat -s -p tcp

Na secção de output TCP Statistics, verificar os valores de Segments Retransmitted e Connection Failures — valores crescentes indicam problemas de rede.


6. Testar Velocidade para Partilha de Rede

# Medir velocidade de cópia para uma partilha de rede
$file = 'C:\Windows\System32\ntoskrnl.exe'
$dest = '\\servidor\partilha\teste_velocidade'
$sw   = [System.Diagnostics.Stopwatch]::StartNew()
Copy-Item $file $dest -Force
$sw.Stop()
$sizeMB = (Get-Item $file).Length / 1MB
"Velocidade: $([math]::Round($sizeMB / $sw.Elapsed.TotalSeconds, 2)) MB/s"
💡 Dica: Para testes mais precisos de largura de banda, usar o iPerf3 (gratuito) que permite medir o throughput real entre dois pontos sem o overhead de protocolos SMB/CIFS.

7. TCPView — Conexões em Tempo Real

A ferramenta TCPView das Sysinternals mostra todas as conexões TCP/UDP em tempo real com o processo responsável — equivalente ao netstat -ano mas com interface gráfica e atualização automática.

Útil para identificar:

  • Conexões em estado TIME_WAIT em excesso (esgotamento de portas)
  • Processos com número anormal de conexões abertas
  • Ligações a endereços IP suspeitos

8. Checklist — Diagnóstico de Rede

  • Get-NetAdapter — algum adaptador em estado Disconnected ou com erros?
  • ping ao gateway — latência dentro do esperado?
  • pathping ao destino — perda de pacotes em algum hop?
  • Resolve-DnsName — resolução DNS a funcionar e dentro de tempo?
  • netstat -s -p tcp — retransmissões e falhas de conexão?
  • Segments Retransmitted/sec no PerfMon — acima de 0?
  • ✅ Teste de velocidade para partilha — dentro do esperado para a ligação?

Este artigo foi útil?

Duarte Spínola

Deixe um Comentário