उच्च विलंबता नेटवर्क पर SFTP अपलोड की गति बढ़ाएं?


27

मैं SFTP का उपयोग करके अंतरराष्ट्रीय स्तर पर बड़ी फ़ाइलों के एक सेट को स्थानांतरित करने की कोशिश कर रहा हूं, लेकिन मुझे पता है कि मेरे अंतर्राष्ट्रीय साथी को दोनों तरफ बहुत अच्छे कनेक्शन के बावजूद ~ 50k से ऊपर अपलोड गति नहीं मिल सकती है। हम इस गति पर अपलोड करने वाले कई कनेक्शन प्राप्त कर सकते हैं (इसलिए बैंडविड्थ नहीं?), लेकिन कोई भी अपलोड गति में सुधार नहीं करता है, जो एक समस्या है क्योंकि कई फाइलें आकार में कई जीबी हैं।

SFTP को मानक Apple OSX "रिमोट लॉगिन" SFTP सिस्टम का उपयोग करके होस्ट किया जा रहा है।

क्या अपलोड गति में सुधार करने का कोई तरीका है, या एक अलग SFTP होस्ट है जो मदद करेगा? यह मेरे लिए स्पष्ट नहीं है अगर यह एक कॉन्फ़िगरेशन समस्या या प्रोटोकॉल की अंतर्निहित सीमा है।

(सुरक्षा कारणों से मुझे एंड-टू-एंड एन्क्रिप्टेड पीयर-टू-पीयर कनेक्शन का उपयोग करने की आवश्यकता है - कोई क्लाउड सेवाएं नहीं)।


यदि आपके पास बजट है, तो व्यावसायिक समाधान हैं जो एसएफटीपी जैसे टीसीपी-आधारित फाइल ट्रांसफर सिस्टम से बहुत बेहतर प्रदर्शन करते हैं।
केनस्टर

4
अगर यह वन टाइम-मल्टी-जीबी ट्रांसफर है तो इंटरनेट के विकल्प की कोशिश क्यों न करें ।
vasin1987

1
एन rsyncट्रांसफर शुरू करने के लिए एक सरल शेल स्क्रिप्ट आसानी से 1. सुरक्षित ट्रांसफर और 2. आपकी बैंडविड्थ को अधिकतम कर देगा। एन rsyncट्रांसफर stackoverflow.com/a/38014502/52074
ट्रेवर बॉयड स्मिथ

2
या बस का उपयोग करें uftp-multicast.sourceforge.net इच्छा एन्क्रिप्ट और मैक अपने बैंडविड्थ बाहर होगा।
ट्रेवर बॉयड स्मिथ

4
अपने अंतिम वाक्य के विपरीत, क्लाउड सेवा ठीक होनी चाहिए यदि आप स्थानीय रूप से फ़ाइल को एन्क्रिप्ट करते हैं, इसे क्लाउड के माध्यम से स्थानांतरित करते हैं, तो स्थानीय रूप से 8at दूसरे छोर पर डिक्रिप्ट करें), जिसका अर्थ अभी भी एंड-टू-एंड एन्क्रिप्शन होगा। (आप सफल स्वागत के बारे में कुछ छोटी प्रतिक्रिया जोड़ना चाह सकते हैं)। आप अपने सभी ट्रैफ़िक को सूँघने में सक्षम लोगों द्वारा हमलों को रोकने के लिए sftp एन्क्रिप्शन का उपयोग करते हैं। इसलिए बस उन्हें एन्क्रिप्टेड डेटा देना यह मानने से भी बदतर नहीं है कि वे इसे वैसे भी प्राप्त कर सकते हैं।
हेगन वॉन एटिजन

जवाबों:


29

OpenSSH sftpक्लाइंट के साथ (जो आपको लगता है), आप उपयोग कर सकते हैं:

  • -Rअनुरोध पंक्ति की लंबाई बढ़ाने के लिए स्विच (डिफ़ॉल्ट 64 है)
  • -Bरीड / राइट अनुरोध आकार बढ़ाने के लिए स्विच (डिफ़ॉल्ट 32 KB है)

एक शुरुआत के लिए, दोनों को दोगुना करने का प्रयास करें:

sftp -R 128 -B 65536 user@host

यह शायद ज्यादा मायने नहीं रखता है, आप उनमें से किसको बढ़ाते हैं।

या तो बढ़ाने से आपके उच्च-विलंबता कनेक्शन को संतृप्त करने में मदद मिलेगी। उपरोक्त सेटिंग्स के साथ, यह किसी भी समय पाइप में बहने वाले 8 एमबी डेटा (128 * 64K = 8M) रखेगा।

ध्यान दें कि यह केवल बड़ी फ़ाइल स्थानांतरण में मदद करता है। बहुत सी छोटी फ़ाइलों को स्थानांतरित करते समय इसका कोई प्रभाव नहीं होगा।


कुछ पृष्ठभूमि और अन्य (GUI) SFTP ग्राहकों के बारे में चर्चा के लिए, " ZZ देरी / विलंबता "खंड के मेरे उत्तर को देखें क्यों FileZilla SFTP फ़ाइल स्थानांतरण उपलब्ध बैंडविड्थ के बजाय 1.3MiB / सेकंड पर अधिकतम कैप्ड है? rsync और WinSCP और भी धीमे हैं


4

आप कोशिश कर सकते हैं और संपीड़न को सक्षम कर सकते हैं, और देखें कि क्या मदद करता है।

से man sftp:

-C संपीड़न सक्षम करता है (ssh -C ध्वज के माध्यम से)।

और से man ssh:

-C सभी डेटा (स्टड, stdout, stderr, और अग्रेषित X11, TCP और UNIX- डोमेन कनेक्शन के लिए डेटा सहित) का अनुरोध। संपीड़न एल्गोरिथ्म gzip (1) द्वारा उपयोग किया जाता है, और प्रोटोकॉल स्तर के लिए CompressionLevel विकल्प द्वारा "स्तर" को नियंत्रित किया जा सकता है। मॉडेम लाइनों और अन्य धीमे कनेक्शनों पर संपीड़न वांछनीय है, लेकिन केवल फास्ट नेटवर्क पर चीजों को धीमा कर देगा । डिफ़ॉल्ट मान कॉन्फ़िगरेशन फ़ाइलों में होस्ट-दर-होस्ट आधार पर सेट किया जा सकता है; संपीड़न विकल्प देखें।

इसके बजाय ऐसा लगता है कि कनेक्शन अपने मार्ग के साथ कुछ बिंदु पर सीमित हो सकता है (या यों कहें, कि मुझे आपके 50kB / s प्रति कनेक्शन के लिए सबसे सरल स्पष्टीकरण लगता है, लेकिन ऐसे कई कनेक्शन संभव हो रहे हैं), हालांकि यह एक नहीं हो सकता है बुरा विचार यह सुनिश्चित करने के लिए कि दोनों तरफ डिस्क एक कारक नहीं हैं।

आप यह देखने के लिए एक त्वरित pcap चला सकते हैं कि क्या कोई 'स्पष्ट' समस्याएँ हैं (जैसे बड़ी संख्या में retransmits) - लेकिन जब तक आपको कुछ विश्वास नहीं होता कि आप इसे संबोधित कर पाएंगे, मैं शायद यह देखूंगा कि क्या संपीड़न को सक्षम करना होगा मदद।


धन्यवाद! दुर्भाग्य से फाइलें पूर्व-संपीड़ित हैं, इसलिए मुझे संदेह है कि मैं कुछ भी करूंगा ...: /
nick_eu

संपीड़न यहाँ चीजों को गति नहीं देता है, भले ही डेटा संपीड़ित न हो। यह सीपीयू समय (और देरी) का बहुत बड़ा ओवरहेड है, इसलिए यह इन दिनों समझ में नहीं आता है।
जकुजे

1
यदि अड़चन नेटवर्क है, तो दोनों तरफ थोड़ा अधिक सीपीयू @ जकूजी को धीमा नहीं करना चाहिए, जब तक कि बॉक्स 50kB / s पर संपीड़ित करने में असमर्थ हो, जो कि एक मुद्दा नहीं होना चाहिए।
बेन

@Ben सवाल स्पष्ट रूप से बताता है कि नेटवर्क एक अड़चन नहीं है।
जकूजी

4

मैं SFTP का उपयोग करके अंतरराष्ट्रीय स्तर पर बड़ी फ़ाइलों के एक सेट को स्थानांतरित करने की कोशिश कर रहा हूं

इसका अभी तक उत्तर के रूप में उल्लेख नहीं किया गया है, लेकिन जब उच्च-विलंबता लिंक पर कई फ़ाइलों को स्थानांतरित किया जाता है, तो बेहतर परिणाम प्राप्त करने के लिए वास्तव में सरल समाधान है:

समानांतर में कई फ़ाइलों को स्थानांतरित करें।

और यह है एक समाधान है कि आप भी अपने प्रश्न में उल्लेख किया है। इसका इस्तेमाल करें।

मूल रूप से, टीसीपी प्रोटोकॉल एक बड़े बैंडविड्थ-देरी उत्पाद के साथ कनेक्शन को बहुत अच्छी तरह से संभाल नहीं करता है - एक एकल कनेक्शन किसी भी समय पर्याप्त डेटा को स्थानांतरित नहीं कर सकता है। Https://en.wikipedia.org/wiki/TCP_tuning देखें

चूंकि प्रत्येक कनेक्शन टीसीपी प्रोटोकॉल द्वारा सीमित है, बस अधिक कनेक्शन का उपयोग करें।


1
यहां बताया गया है कि एसएफटीपी ट्रांसफर को कैसे समानांतर किया जाए: serverfault.com/questions/248105/…
niutech

3

Sftp स्थानान्तरण को गति दें

मान लें कि आपके मुद्दे नेटवर्क ट्यूनिंग और / या टीसीपी कनेक्शन प्रति थ्रॉटलिंग हैं, lftp दर्पण सबसिस्टम का उपयोग करके sftp पर एक नज़र डालें

प्रत्येक छोर पर नेटवर्क ट्यूनिंग एक बहुत बड़ा विषय है और सर्वरफॉल्ट के दायरे से बाहर विषय को आगे बढ़ाते हुए बहुत आगे और पीछे की आवश्यकता होगी। व्यक्तिगत कनेक्शन के लिए, iwaseatenbyagrue द्वारा उल्लिखित संपीड़न किसी भी तरह से मदद कर सकता है। यह मानता है कि दूरस्थ अंत संपीड़न की अनुमति देता है।


3

(आप प्रश्न शीर्षक में "उच्च विलंबता" का उल्लेख करते हैं, लेकिन शरीर के पाठ में नहीं। क्या आपने वास्तविक विलंबता को मापा है, और परिणाम क्या हैं?)

OpenSSH के लिए एक पैच है जो एक उच्च-विलंबता नेटवर्क लिंक पर स्पष्ट रूप से थ्रूपुट में सुधार करता है: HPN-SSH : (जोर मेरा)

OpenSSH में एससीपी और अंतर्निहित SSH2 प्रोटोकॉल कार्यान्वयन सांख्यिकीय रूप से परिभाषित आंतरिक प्रवाह नियंत्रण बफ़र्स द्वारा सीमित नेटवर्क प्रदर्शन है। ये बफ़र्स अक्सर एससीपी के नेटवर्क थ्रूपुट के लिए एक अड़चन के रूप में अभिनय करते हैं, विशेष रूप से लंबे और उच्च बैंडवाइट नेटवर्क लिंक पर। Ssh कोड को संशोधित करके बफ़र्स को रन टाइम पर परिभाषित करने की अनुमति देना इस अड़चन को खत्म करता है। हमने एक पैच बनाया है जो ओपनएसएसएच में अड़चनों को दूर करेगा और अन्य सर्वर और क्लाइंट के साथ पूरी तरह से इंटरऑपरेबल है। इसके अलावा एचपीएन क्लाइंट गैर एचपीएन सर्वर से तेजी से डाउनलोड कर पाएंगे, और एचपीएन सर्वर गैर एचपीएन क्लाइंट से तेजी से अपलोड प्राप्त कर सकेंगे।

इसलिए, प्राप्त पक्ष पर एचपीएन-एसएसएच को संकलित करने और उपयोग करने का प्रयास करें, और देखें कि क्या यह आपकी स्थानांतरण गति में सुधार करता है।


धन्यवाद! मैंने वास्तव में मापा नहीं है, मैं अब स्वीकार करने के लिए तैयार हूं, लेकिन मैं दुनिया भर में आधे-अधूरे इंटरनेट के साथ एक देश में जा रहा हूं, इसलिए मैं अनुमान लगा रहा हूं कि मैं सही हूं। :) पैच बहुत उपयोगी लगता है!
निक_यू

@nick_eu मैंने एक किस्सा देखा है कि वैज्ञानिक एचपीएन-एसएसएच का उपयोग अटलांटिक भर में बड़ी मात्रा में वैज्ञानिक डेटा को स्थानांतरित करने के लिए करेंगे। लगता है जैसे यह आपके उपयोग के मामले के लिए एकदम सही होना चाहिए।
ट्विस्टरॉइड राजदूत

0

निश्चित नहीं है कि यह आपके लिए एक विकल्प है, लेकिन क्या आपने डेटा को अंतर्राष्ट्रीय साइट पर धकेलने की कोशिश की है? या तो अलग-अलग समय पर यह देखने के लिए कि क्या नेटवर्क संसाधनों के लिए विवाद के साथ इसका मुद्दा है?


महान विचार, कोशिश करेंगे।
निक_यू

0

हम इस गति से अपलोड करने वाले कई कनेक्शन प्राप्त कर सकते हैं (इसलिए बैंडविड्थ नहीं?)

यह एक कॉन्फ़िगरेशन समस्या की तरह लगता है - या तो जानबूझकर (किसी भी अतिरिक्त प्रावधान किए बिना अपक्षय सेवाओं के एक तरीके के रूप में) या दुर्घटना से (जैसे कि टूटी हुई खिड़की स्केलिंग या अत्यधिक यातायात नियंत्रण)। जब आप ट्रांसफर को समानांतर कर सकते हैं, तो आपने हमें बताया है कि कनेक्शन के दूसरे छोर पर क्या है या यदि इसके लायक कुछ सरल लिपियों को विकसित करना है ताकि फाइलों के शंटिंग / पुनर्गठन को संभाल सकें।

कतार आकार और संपीड़न को ट्यून करने से कोई महत्वपूर्ण प्रभाव होने की संभावना नहीं है, जब तक कि कारण बहुत बुरी तरह से लिखा गया सॉफ्टवेयर नहीं है (और ओपनएसएसएच इस श्रेणी में नहीं आता है - विलंबता का लंबा अनुरोध कतार / बड़े ब्लॉक आकार के साथ खुलने का उपयोग करने में बहुत अधिक बिंदु नहीं है जब तक कि विलंबता न हो। 250msec से अधिक। आप सर्वर के साथ एक समस्या को दूर करने के लिए विभिन्न स्थानों के विभिन्न ग्राहकों के साथ प्रयास करने पर विचार कर सकते हैं।

मेरी पहली कॉल यह पहचानने के लिए होगी कि समस्या के लिए कौन सा प्रदाता दोषी है, उन्हें समस्या को ठीक करने या किसी अन्य प्रदाता पर स्विच करने के लिए कहें।


क्षमा करें, अधिक स्पष्ट होना चाहिए था। कोई "प्रदाता" नहीं है - मैं अपने डेस्कटॉप पर होस्ट कर रहा हूं, और एक सहयोगी अपने कंप्यूटर से कनेक्ट करने का प्रयास कर रहा है। सहकर्मी सिर्फ एक ssh सत्र खोल रहा है (प्रोटोकॉल के बारे में सुनिश्चित नहीं है, लेकिन जाँच कर सकता है) और उपयोग कर रहा हैput
nick_eu

@nick_eu वह इंटरनेट प्रदाताओं के बारे में बात कर रहा है।
ड्यूसॉर्स

ऐसा लगता है कि कॉन्फ़िगरेशन समस्या नहीं है। यह कॉन्फ़िगरेशन समस्या नहीं है। टीसीपी प्रोटोकॉल स्वयं एक बड़े बैंडविड्थ-देरी उत्पाद के साथ कनेक्शन पर अच्छा प्रदर्शन नहीं करता है। मूल रूप से, यदि कनेक्शन ऐसा है कि एक समय में बहुत अधिक डेटा उड़ान में हो सकता है, तो टीसीपी प्रोटोकॉल स्वयं उस डेटा को समय पर किसी भी क्षण स्थानांतरित नहीं कर सकता है। यही कारण है कि समानांतर टीसीपी कनेक्शन डेटा ट्रांसफर दरों में सुधार के लिए काम करते हैं।
एंड्रयू हेनले

"एक बड़े बैंडविड्थ-देरी उत्पाद के साथ कनेक्शन पर अच्छा प्रदर्शन नहीं करता है" - कृपया RFC 1323 (1992 से) और 7323 (2014 में 1323 की जगह)
पढ़ें

@symcbean फिर ओपी की व्याख्या करें हम इस गति से अपलोड करने वाले कई कनेक्शन प्राप्त कर सकते हैं (इसलिए बैंडविड्थ नहीं?), लेकिन कोई भी अपलोड गति में सुधार नहीं करता है चरम चरमता के साथ कनेक्शन पर टीसीपी का एक क्लासिक लक्षण है - सभी टीसीपी एक्सटेंशन को कम कर सकते हैं। समस्या कुछ हद तक क्योंकि वे प्रोटोकॉल के साथ मूलभूत समस्याओं को संबोधित नहीं कर सकते। और इस समस्या के लिए किस प्रदाता को दोष देना है, इसके बारे में शुभकामनाएं , उन्हें "अंतरराष्ट्रीय स्तर पर बड़े पैमाने पर एक सेट को स्थानांतरित करने" की कोशिश करते हुए समस्या को ठीक करने के लिए कहें
एंड्रयू हेनले
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.