Estou tentando transferir um conjunto de arquivos grandes internacionalmente usando SFTP, mas estou descobrindo que meu parceiro internacional não pode obter velocidades de upload acima de ~ 50k, apesar das excelentes conexões de ambos os lados. Podemos fazer o upload de várias conexões nessa velocidade (não largura de banda?), Mas nenhum upload único melhora a velocidade, o que é um problema, pois muitos arquivos têm vários GB de tamanho.
O SFTP está sendo hospedado usando o sistema SFTP padrão da Apple OSX "Login remoto".
Existe uma maneira de melhorar a velocidade de upload ou existe um host SFTP diferente que ajudaria? Não está claro para mim se isso é um problema de configuração ou uma limitação inerente ao protocolo.
(Por motivos de segurança, preciso usar uma conexão ponto a ponto criptografada de ponta a ponta - sem serviços em nuvem).
fonte
rsync
transferências facilmente alcançará seus requisitos de 1. Transferência segura e 2. Maximizando sua largura de banda. Veja aqui um exemplo de como começar Nrsync
transfere stackoverflow.com/a/38014502/52074Respostas:
Com o cliente OpenSSH
sftp
(que você parece usar), você pode usar:-R
alterne para aumentar o comprimento da fila de solicitações (o padrão é 64)-B
alterne para aumentar o tamanho da solicitação de leitura / gravação (o padrão é 32 KB)Para começar, tente dobrar os dois:
Provavelmente não importa muito, qual deles você aumenta.
Aumentar um dos dois deve ajudar a saturar sua conexão de alta latência. Com as configurações acima, ele manterá 8 MB de dados fluindo no tubo a qualquer momento (128 * 64K = 8M).
Observe que isso ajuda apenas com grandes transferências de arquivos. Não terá nenhum efeito ao transferir muitos arquivos pequenos.
Para obter mais informações e uma discussão sobre outros clientes SFTP (GUI), consulte a seção "Atraso / latência da rede" da minha resposta para Por que a transferência de arquivos SFTP do FileZilla é máxima com limite de 1.3MiB / s em vez de saturar a largura de banda disponível? rsync e WinSCP são ainda mais lentos .
fonte
Você pode tentar ativar a compactação e ver se isso ajuda.
De
man sftp
:E de
man ssh
:Parece que a conexão pode ter uma taxa limitada em algum momento ao longo do caminho (ou melhor, isso me parece a explicação mais simples para seus 50kB / s por conexão, mas várias conexões são possíveis), embora possa não ser uma má idéia para garantir que os discos de ambos os lados não sejam um fator.
Você também pode executar um pcap rápido para ver se há problemas "óbvios" (como um grande número de retransmissões) - mas, a menos que você tenha alguma confiança, poderá resolver isso, provavelmente verificaria se a compactação seria ativada. Socorro.
fonte
Ainda não foi mencionado como resposta, mas ao transferir vários arquivos por um link de alta latência, existe uma solução realmente simples para obter melhor desempenho:
Transfira vários arquivos em paralelo.
E é uma solução que você mencionou na sua pergunta. Use-o.
Basicamente, o protocolo TCP não lida com conexões com um grande produto de retardo de largura de banda muito bem - uma única conexão não pode manter dados suficientes em movimento ao mesmo tempo. Consulte https://en.wikipedia.org/wiki/TCP_tuning
Como cada conexão é limitada pelo protocolo TCP, basta usar mais conexões.
fonte
Acelere as transferências sftp
Supondo que seus problemas sejam de ajuste de rede e / ou limitação por conexão TCP, dê uma olhada no sftp usando o subsistema de espelho lftp
O ajuste da rede em cada extremidade é um tópico muito maior e exigiria muito tempo para frente e para trás, empurrando o tópico para fora do escopo do ServerFault. Para conexões individuais, a compactação mencionada por iwaseatenbyagrue pode ajudar de qualquer maneira. Isso pressupõe que a extremidade remota permita a compactação.
fonte
(Você mencionou "alta latência" no título da pergunta, mas não no texto do corpo. Você mediu a latência real e quais são os resultados?)
Há um patch para o OpenSSH que melhora explicitamente a taxa de transferência em um link de rede de alta latência: HPN-SSH : (ênfase minha)
Portanto, tente compilar e usar o HPN-SSH no lado do recebimento e veja se isso melhora sua velocidade de transferência.
fonte
Não tem certeza se essa é uma opção para você, mas você tentou puxar vs enviar os dados para o site internacional? Bem como em momentos diferentes para ver se é um problema com a disputa por recursos de rede?
fonte
Parece um problema de configuração - deliberadamente (como uma forma de aumentar os serviços de venda sem ter que fazer nenhuma provisão extra) ou por acidente (por exemplo, redimensionamento de janelas quebradas ou controle de tráfego excessivamente zeloso). Embora você possa paralelizar as transferências, você não nos disse nada sobre o que está do outro lado da conexão ou se vale a pena desenvolver alguns scripts simples para lidar com a fragmentação / reconstituição de arquivos.
É improvável que o ajuste do tamanho e da compactação da fila tenha um impacto significativo, a menos que a causa seja um software mal gravado (e o openSSH não se enquadra nessa categoria - não faz muito sentido usar o openssh com uma fila de solicitações mais longa / tamanho de bloco maior, a menos que a latência seja acima de 250 ms. Você pode considerar tentar com clientes diferentes de locais diferentes para descartar um problema com o servidor.
Minha primeira ligação seria identificar qual provedor é o culpado pelo problema, pedir que eles resolvessem o problema ou mudassem para outro provedor.
fonte
put