Determinando por que as transferências de arquivos são tão lentas

7

Estou tentando transferir arquivos grandes (mais de três shows) pela rede. Minha conexão é de 100 megabits para a caixa, com um backbone gigabit. No entanto, ao transferir arquivos entre servidores e de um servidor para o meu computador local, a velocidade de transferência gira em torno de 11 a 13 megabits por segundo.

Grandes downloads da Internet, no entanto, são significativamente mais rápidos.

Eu mencionei esse problema com minha equipe de infraestrutura de rede, mas eles insistem que está tudo bem com a configuração da rede.

Existe alguma ferramenta que eu possa instalar no meu computador ou nos servidores para tentar isolar a fonte da lentidão?

    
por Ryan Michela 20.05.2009 / 15:50

8 respostas

8

Em primeiro lugar, verifique os contadores de interface em cada servidor, deve haver 0 ou quase 0 erros reportados.

Em segundo lugar, verifique o duplex de ambos os servidores. Se você estiver misturando 100mbit e GbE, poderá ter uma incompatibilidade de duplex. Certifique-se de que ambos os lados estejam configurados para automático / automático ou defina manualmente a velocidade e o duplex em todas as interfaces.

Em terceiro lugar, que tipo de contenção existe no backbone do GbE, você pode confirmar que há headroom suficiente para a sua transferência?

Finalmente, o seu servidor de envio é capaz de transmitir rápido o suficiente. Como os comentários abaixo sugerem, você está limitado pela largura de banda do IO dos drives dos remetentes, ou pela CPU (se você estiver usando scp ou similar)?

Por exemplo, 11 a 13 mega bytes por segundo é o máximo teórico de 100mbit, tem certeza de que a ferramenta que você está usando para medir está reportando as unidades corretas?

    
por 20.05.2009 / 15:55
5

Confira o procedimento a seguir que uso, que pode ajudar a restringir o problema.

Quando eu testo a taxa de transferência da rede, é melhor remover tantas variáveis quanto possível, como disco e / ou limitações da CPU. Aqui está o procedimento que uso, que pode ilustrar o máximo típico que você verá na sua rede.

Ferramentas:

Ambos os utilitários devem estar disponíveis na maioria dos sistemas modernos * nix, pré-instalados, via pacotes ou capazes de serem compilados a partir da fonte.

Procedimento:

  1. Execute o seguinte comando em um computador para configurar o ouvinte do UDP. (O uso do UDP proporcionará números mais altos de desempenho devido à falta de sobrecarga TCP para transferir).

    nc -ulp 5000 > /dev/null

  2. Na outra máquina, execute o seguinte comando, substituindo o endereço IP do ouvinte, para enviar um fluxo de zeros pela rede para o ouvinte nc. O utilitário pv mostrará o desempenho atual conforme rastreado pelo receptor.

    pv < /dev/zero | nc -u listener-ip-address 5000

Notas:

  • O máximo teórico em uma conexão Gig Ethernet é de 119MB / s (aviso, M B , não M b )
  • O TCP também pode ser testado removendo -u nos dois comandos nc
  • Em aplicativos do mundo real, você nunca alcançará os números de desempenho ilustrados na saída pv.

Este método fornece resultados previsíveis em uma rede bem projetada com equipamento funcionando corretamente. Por essa razão, é uma boa ferramenta para ajudar a descobrir se a própria rede ou o equipamento de rede está contribuindo para a "lentidão" percebida.

    
por 20.05.2009 / 16:53
1

Você está no Windows Vista? Observe que o Vista limita as transferências da LAN sempre que você tiver um aplicativo multimídia aberto (incluindo um navegador da web com flash).

Eu tive esse problema com transferências limitadas em 10MB / s quando deveriam ter sido xfering em 30-40MB / s.

Você pode desativar a limitação em uma chave do Registro detalhada aqui:

link

    
por 20.05.2009 / 18:51
0

Considere também as diferenças de protocolo entre os dois cenários. "Downloads grandes da Internet" soam como HTTP ou FTP sobre TCP / IP. Na LAN, você está usando algo diferente? Talvez um conjunto incompatível de implementações SMB ou compartilhamento de arquivos da Apple? Eu só mencionei isso porque eu vi o tráfego SMB entre os sistemas Windows e UNIX / Linux se comportando de alguma maneira realmente inteligente.

Tente fazer experiências com diferentes mecanismos de transferência e veja se isso produz resultados diferentes.

    
por 20.05.2009 / 16:49
0

Quando você está transferindo arquivos "entre servidores", os servidores estão falando diretamente?

Ou você está no Windows e tem drives mapeados para cada servidor e você está arrastando arquivos para eles?

Nesse segundo cenário, tudo está passando pelo seu computador, então a transferência mais rápida que você receberá será em torno de 11MBps.

Se você estiver em um sistema * nix, use ttcp para determinar se sua conexão TCP é o gargalo.

    
por 20.05.2009 / 19:07
0

Se você estiver usando o Windows, é altamente recomendável usar o utilitário gratuito RichCopy . Ele é multithread e pode pausar e retomar as operações de cópia de arquivos. Eu tive muita sorte em usá-lo para transferir arquivos entre servidores.

    
por 20.05.2009 / 19:36
0

É uma ferramenta muito antiga, mas eu tive um bom sucesso com o Netperf no passado. Isso deve lhe dar uma ideia inicial da largura de banda entre dois dispositivos.

    
por 21.05.2009 / 02:22
0

Sugestão estúpida, mas é possível que a transferência não esteja acontecendo na LAN, mas esteja saindo pela Internet? Como você está se conectando entre as máquinas? Eu pergunto porque seus sintomas soam semelhantes aos discutidos em um episódio recente de DotNetRocks. Veja a transcrição da solução comece a ler em:

Carl Franklin: Yeah. The Brain Buster, we wanted people to send in their suggestions or the answers they think, to what happened.

    
por 21.05.2009 / 06:49