Saya mencoba untuk mentransfer satu set file besar secara internasional menggunakan SFTP, tetapi saya menemukan mitra internasional saya tidak bisa mendapatkan kecepatan unggah di atas ~ 50k meskipun koneksi yang sangat baik di kedua sisi. Kita bisa mendapatkan banyak koneksi yang mengunggah dengan kecepatan ini (jadi bukan bandwidth?), Tetapi tidak ada satu pun unggahan yang meningkat dalam kecepatan, yang merupakan masalah karena banyak file berukuran beberapa gb.
SFTP dihosting menggunakan sistem SFTP Apple OSX "Remote Login" standar.
Apakah ada cara untuk meningkatkan kecepatan unggah, atau adakah host SFTP berbeda yang akan membantu? Tidak jelas bagi saya apakah ini merupakan masalah konfigurasi atau keterbatasan protokol.
(Untuk alasan keamanan, saya harus menggunakan koneksi peer-to-peer terenkripsi ujung-ke-ujung - tidak ada layanan cloud).
sumber
rsync
transfer akan dengan mudah mencapai persyaratan 1. Transfer aman dan 2. Memaksimalkan bandwidth Anda. Lihat di sini untuk contoh bagaimana memulai Nrsync
transfer stackoverflow.com/a/38014502/52074Jawaban:
Dengan klien OpenSSH
sftp
(yang tampaknya Anda gunakan), Anda dapat menggunakan:-R
beralih untuk menambah panjang antrian permintaan (standarnya adalah 64)-B
beralih untuk menambah ukuran permintaan baca / tulis (standarnya adalah 32 KB)Sebagai permulaan, coba gandakan keduanya:
Mungkin tidak terlalu menjadi masalah, yang mana yang Anda tingkatkan.
Meningkatkan keduanya akan membantu menjenuhkan koneksi latensi tinggi Anda. Dengan pengaturan di atas, itu akan membuat data senilai 8 MB mengalir di pipa kapan saja (128 * 64K = 8M).
Perhatikan bahwa ini hanya membantu transfer file besar. Itu tidak akan berpengaruh apa pun, ketika mentransfer banyak file kecil.
Untuk beberapa latar belakang dan diskusi tentang klien SFTP (GUI) lainnya, lihat bagian "Keterlambatan jaringan / latensi" pada jawaban saya untuk Mengapa file Transfer FileZilla SFTP maksimum dibatasi 1,3MiB / detik alih-alih menjenuhkan bandwidth yang tersedia? rsync dan WinSCP bahkan lebih lambat .
sumber
Anda dapat mencoba dan mengaktifkan kompresi, dan melihat apakah itu membantu.
Dari
man sftp
:Dan dari
man ssh
:Agak terdengar seolah-olah koneksi mungkin dibatasi pada beberapa titik di sepanjang jalurnya (atau lebih tepatnya, bagi saya penjelasan paling sederhana untuk 50kB / s Anda per koneksi, tetapi beberapa koneksi seperti itu dimungkinkan), meskipun mungkin bukan ide buruk untuk memastikan disk di kedua sisi bukan merupakan faktor.
Anda juga dapat menjalankan pcap cepat untuk melihat apakah ada masalah yang 'jelas' (seperti sejumlah besar transmisi ulang) - tetapi kecuali jika Anda memiliki kepercayaan diri Anda akan dapat mengatasi ini, saya mungkin hanya akan melihat apakah mengaktifkan kompresi akan membantu.
sumber
Itu belum disebutkan sebagai jawaban, tetapi ketika mentransfer beberapa file melalui tautan latensi tinggi, ada satu solusi yang sangat sederhana untuk mendapatkan kinerja yang lebih baik:
Transfer beberapa file secara paralel.
Dan itu adalah solusi yang bahkan Anda sebutkan dalam pertanyaan Anda. Gunakan.
Pada dasarnya, protokol TCP tidak menangani koneksi dengan produk penundaan bandwidth besar dengan sangat baik - koneksi tunggal tidak dapat membuat cukup data bergerak pada satu waktu. Lihat https://en.wikipedia.org/wiki/TCP_tuning
Karena setiap koneksi dibatasi oleh protokol TCP, cukup gunakan lebih banyak koneksi.
sumber
Mempercepat transfer sftp
Dengan asumsi masalah Anda adalah penyempurnaan jaringan dan / atau pembatasan per koneksi TCP, lihat sftp menggunakan subsistem mirror lftp
Penyetelan jaringan di setiap ujung adalah topik yang jauh lebih besar dan akan membutuhkan banyak bolak-balik, mendorong topik di luar ruang lingkup ServerFault. Untuk koneksi individual, kompresi yang disebutkan oleh iwaseatenbyagrue dapat membantu. Ini mengasumsikan ujung jarak jauh memungkinkan kompresi.
sumber
(Anda menyebutkan "latensi tinggi" dalam judul pertanyaan, tetapi tidak dalam teks isi. Sudahkah Anda mengukur latensi aktual, dan apa hasilnya?)
Ada patch untuk OpenSSH yang secara eksplisit meningkatkan throughput pada tautan jaringan latensi tinggi: HPN-SSH : (penekanan tambang)
Jadi, coba kompilasi dan gunakan HPN-SSH di sisi penerima, dan lihat apakah ini meningkatkan kecepatan transfer Anda.
sumber
Tidak yakin apakah ini pilihan bagi Anda, tetapi sudahkah Anda mencoba menarik vs mendorong data ke situs internasional? Serta pada waktu yang berbeda untuk melihat apakah ini masalah dengan pertengkaran untuk sumber daya jaringan?
sumber
Kedengarannya seperti masalah konfigurasi - baik secara sengaja (sebagai cara meningkatkan layanan tanpa harus membuat ketentuan tambahan) atau secara tidak sengaja (misalnya penskalaan jendela yang rusak atau kontrol lalu lintas yang terlalu bersemangat). Meskipun Anda dapat memparalelkan transfer, Anda tidak memberi tahu kami apa yang ada di ujung koneksi atau jika ada gunanya mengembangkan beberapa skrip sederhana untuk menangani sharding / pemulihan file.
Menyetel ukuran antrian dan kompresi tidak akan berdampak signifikan, kecuali jika penyebabnya adalah perangkat lunak yang ditulis dengan sangat buruk (dan openSSH tidak termasuk dalam kategori ini - tidak banyak gunanya menggunakan openssh dengan antrian permintaan yang lebih panjang / ukuran blok yang lebih besar kecuali latensinya adalah lebih dari 250msec. Anda mungkin mempertimbangkan mencoba dengan klien yang berbeda dari lokasi yang berbeda untuk mengesampingkan masalah dengan server.
Panggilan pertama saya adalah mengidentifikasi penyedia mana yang harus disalahkan atas masalah tersebut, minta mereka untuk memperbaiki masalah atau beralih ke penyedia lain.
sumber
put