Percebi que, quando faço SSH em uma máquina remota por meio de um link lento, o SSH parece "grudar" depois que uma quantidade relativamente grande de dados é transferida.
Por exemplo, digitar texto no link é bom, mas a execução ls /etc
congelará a conexão por alguns minutos.
Eu entenderia se o atraso fosse porque eu estava maximizando a velocidade da conexão e ela voltou ao normal depois que os dados foram transferidos, mas a conexão congela por muito mais tempo do que você esperaria pela quantidade de dados realmente envolvida.
O estranho é que se eu abrir duas conexões SSH de e para as mesmas máquinas, quando uma delas congelou, a outra ainda funciona bem. Portanto, não posso maximizar a velocidade da conexão, caso contrário, os dois congelariam ao mesmo tempo.
Não há modelagem de tráfego ativa em nenhuma caixa ou (tanto quanto eu posso dizer) nos roteadores intermediários, portanto, não deve haver nada descartando pacotes para manter a velocidade média de transferência dentro de um determinado intervalo.
Alguém pode sugerir algo que possa causar esse tipo de comportamento ou algo mais para verificar?
A mesma coisa acontece com scp
e sshfs
, ao scp
relatar uma taxa de transferência enorme (muitos MB/s, então a velocidade cai lentamente stalled
por alguns minutos, então, se eu tiver sorte, ela se repetirá até que a transferência do arquivo termine.) sshfs
funciona, mas muitas vezes (nem sempre) depois que um arquivo é salvo, o ponto de montagem não responde por alguns minutos, bloqueando temporariamente qualquer programa que tente acessá-lo.
EDIT: Eu tentei usar iperf
e obter algumas estatísticas interessantes:
Local: 0.0- 0.9 sec 256 KBytes 2.25 Mbits/sec
Remote: 0.0- 7.0 sec 256 KBytes 302 Kbits/sec
Local: 0.0-15.9 sec 1.00 MBytes 529 Kbits/sec
Remote: 0.0-16.0 sec 1.00 MBytes 524 Kbits/sec
Parece que abaixo de uma certa quantidade de dados, o local pode enviar muito mais rápido do que o remoto pode receber. Eu acho que isso não é um problema de SSH, afinal. Vou investigar algumas configurações de TCP que podem ajustar isso, mas se alguém souber com certeza, por favor avise!
Sua conexão SSH está excedendo o tamanho da MTU em algum lugar entre o cliente e o servidor, e a descoberta da unidade de transmissão máxima do caminho não está funcionando. (Esta é uma das várias razões pelas quais a prevenção geral do tráfego ICMP em nome da segurança é uma má ideia.)
Leitura adicional
Eu tive um problema parecido:
Acontece que o firmware do meu roteador estava desatualizado!