स्लो इंटरनेट कनेक्शन का अनुकरण


188

मुझे पता है कि यह एक अजीब सवाल है। चूंकि मैं आमतौर पर "अनुमान" के आधार पर एप्लिकेशन विकसित करता हूं कि सभी उपयोगकर्ताओं के पास धीमा इंटरनेट कनेक्शन है। लेकिन, क्या कोई सोचता है कि धीरे-धीरे इंटरनेट कनेक्शन को प्रोग्राम करने का एक तरीका है, इसलिए मैं "देख सकता हूं" कि कोई एप्लिकेशन विभिन्न "कनेक्शन स्पीड" के तहत कैसा प्रदर्शन करता है?

मुझे इस बात की चिंता नहीं है कि किस भाषा का उपयोग किया जाता है। और मैं कोड नमूने या कुछ भी नहीं ढूंढ रहा हूं, बस इसके पीछे तर्क में दिलचस्पी है।

जवाबों:


109

यदि आप विंडोज़ चला रहे हैं, तो फ़िडलर एक महान उपकरण है। इसमें मॉडेम की गति को अनुकरण करने के लिए एक सेटिंग है, और जो अधिक नियंत्रण चाहता है, उसके पास प्रत्येक अनुरोध में विलंबता जोड़ने के लिए एक प्लगइन है

मैं अपने आवेदन में विलंबता कोड डालने के लिए इस तरह एक उपकरण का उपयोग करना पसंद करता हूं क्योंकि यह बहुत अधिक यथार्थवादी सिमुलेशन है, साथ ही मुझे वास्तविक बिट्स को डिज़ाइन या कोड करने के लिए नहीं बना रहा है। सबसे अच्छा कोड कोड है जो मुझे लिखना नहीं है।

जोड़ा गया : सॉफ्टवेयर टेक्नोलॉजीज पर पावेल डोनचेव के ब्लॉग का यह लेख बताता है कि कस्टम सिम्युलेटेड स्पीड कैसे बनाई जाती है: अपने इंटरनेट कनेक्शन की गति को फ़िडलर के साथ सीमित करना


6
नमस्ते, मैंने एक धीमे इंटरनेट कनेक्शन का अनुकरण करने पर एक छोटी सी गाइड लिखी है जो उपयोगी हो सकती है: developertipoftheday.com/2010/12/… - पूर्ण प्रकटीकरण - यह मेरा अपना ब्लॉग है, लेकिन सिर्फ इस मामले में यह मदद करता है जैसे कि मैं सभी को फैलाने में मदद करता हूं
फिदलर

इस फ़िडलर दृष्टिकोण के साथ परेशानी यह है कि विलंबता सिमुलेशन सही नहीं है, यह गलत प्रोटोकॉल स्तर पर चल रहा है ताकि आपको धीमी शुरुआत का ठीक से अनुकरण करने के लिए न मिले।
सैम केसरॉन

@SamSaffron, इस तरह एक पुरानी पोस्ट को खोदने के लिए क्षमा करें, लेकिन, क्या आप किसी अन्य उपकरण को जानते हैं जो धीमी शुरुआत के सिमुलेशन में मदद करता है?
अनीस रामास्वामी

@AnishRam सबसे अच्छा शर्त dummynet / ipfw का उपयोग करना है जो कि bsd और परिवार के साथ जहाज, freebsd
सैम केसर

@AnishRam इसके अलावा netem linuxfoundation.org/collaborate/workgroups/networking/netem देखें iproute2 का उपयोग करके परिस्थितियों का एक गुच्छा अनुकरण कर सकते हैं।
फिलिप रीक

154

Chrome 38 से शुरू करके आप इसे बिना किसी प्लग इन के कर सकते हैं। बस निरीक्षण तत्व (या F12हॉटकी) पर क्लिक करें, फिर "टॉगल डिवाइस मॉड" पर क्लिक करें यहां छवि विवरण दर्ज करेंऔर आपको कुछ इस तरह दिखाई देगा:

यहां छवि विवरण दर्ज करें

कई अन्य विशेषताओं में यह आपको विशिष्ट इंटरनेट कनेक्शन (3G, GPRS) का अनुकरण करने की अनुमति देता है

अपलोड गति को सीमित करने की कोशिश करने वाले लोगों के लिए पी.एस. वर्तमान समय में दुख की बात है कि यह संभव नहीं है।

PS2 अब आपको कुछ भी टॉगल करने की आवश्यकता नहीं है। थ्रॉटलिंग पैनल नेटवर्क पैनल से सही उपलब्ध है।यहां छवि विवरण दर्ज करें

ध्यान दें कि नो थ्रॉटलिंग पर क्लिक करते समय आप अपने कस्टम थ्रॉटलिंग विकल्प बना सकते हैं।

यहां छवि विवरण दर्ज करें


2
अब क्रोम देव टूल्स थ्रॉटलिंग डाउनलोड और अपलोड स्पीड दोनों को सीमित करता है। लेकिन यह केवल क्रोम में वर्तमान पृष्ठ के लिए इसे सीमित करता है, इसलिए आप इसका उपयोग अन्य ब्राउज़रों में अपने पृष्ठ का परीक्षण करने के लिए नहीं कर सकते। ऐसा करने के लिए आपको फ़िडलर जैसे अन्य उपकरणों का उपयोग करने की आवश्यकता है।
लियोनिद वसीलेव

3
यह उल्लेखनीय है कि वर्तमान में WebSockets इस तरह से थ्रॉटल नहीं किए जाते हैं: Bugs.chromium.org/p/chromium/issues/detail?id=423246
mseddon

अपलोड थ्रॉटलिंग ने नवीनतम (70.0) सहित क्रोम के कुछ संस्करणों में काम नहीं किया है। ट्रैकर पर एक बग रिपोर्ट है
मैट

मेरे अनुभव में, वेब सुस्ती का सबसे बड़ा कारण केबल आईएसपी की परतदार डीएनएस है जो विज्ञापन सर्वर या सीडीएन को हल करने में असमर्थ है। कभी-कभी पूरा पृष्ठ खाली रहता है जब तक कि उन्हें हल करने का प्रयास सफल नहीं होता है या कई बार बाहर हो जाता है। क्या क्रोम इसका अनुकरण कर सकता है?
स्टैकऑवरथो

45

1
नेटवर्क लिंक कंडीशनर को Apple द्वारा बनाए रखा गया है (इसलिए यह स्थिर और विश्वसनीय है), लेकिन यह केवल Xcode के सिम्युलेटर पर लागू होता है।
बेन व्हीलर

4
@BenWheeler ने हाल ही में इसकी कोशिश की है कि इसे निश्चित रूप से सिस्टम वाइड, यहां तक ​​कि लोकलहोस्ट के लिए लागू किया
जाए

2
मैं पुष्टि कर सकता हूं कि नेटवर्क लिंक कंडीशनर वास्तव में पूरे नेटवर्क स्टैक पर लागू है।
फ्रेड वोल्मर

14

लिनक्स मशीनों पर यू का उपयोग कर सकते हैं wondershaper

apt-get install wondershaper

$ sudo wondershaper {interface} {down} {up}

{नीचे} और {अप} kpbs में बैंडविड्थ हैं

उदाहरण के लिए यदि आप इंटरफ़ेस eth1 के बैंडविड्थ को 256kbps अपलिंक और 128kbps डाउनलिंक तक सीमित करना चाहते हैं,

$ sudo wondershaper eth1 256 128

सीमा साफ़ करने के लिए,

$ sudo wondershaper clear eth1 

13

मैं http://www.netlimiter.com/ का उपयोग कर रहा था और यह बहुत अच्छी तरह से काम करता है। न केवल एकल प्रक्रियाओं के लिए गति की सीमा, बल्कि वास्तविक हस्तांतरण दरों को भी दर्शाता है।


अधिकांश अन्य उपकरण कृत्रिम विलंबता के माध्यम से बैंडविड्थ नियंत्रण प्रदान करते हैं जो कि netlimiter के साथ मामला नहीं लगता है जो एक अच्छी बात है। हालांकि, अंत में यह एक वाणिज्यिक उपकरण है (एक परीक्षण संस्करण के साथ) और केवल विंडोज के तहत उपलब्ध है।
अलेक्जेंडर स्टेलमज़ोनक

6

वहाँ iprelay और मैला की तरह टीसीपी परदे के पीछे कर रहे हैं, कि धीमी गति से कनेक्शन अनुकरण करने के लिए बैंडविड्थ आकार देने। आप IPf और iptables जैसे IP फ़िल्टरिंग टूल का उपयोग करके पैकेट शेपिंग को बॉन्ड शेपिंग और अनुकरण कर सकते हैं।


धन्यवाद, मैं iprelay और मैला जो में एक नज़र होगा।

धन्यवाद, ipfw महान काम करता है। यहाँ एक त्वरित गाइड है जो मैंने देखा कि यह सहायक था: barkingiguana.com/2009/12/04/…
एरिक गुयेन

4

आप दुमनीनेट की कोशिश कर सकते हैं , यह कतार और बैंडविड्थ सीमाओं, देरी, पैकेट के नुकसान और बहुपथ प्रभावों का अनुकरण कर सकता है


4

चार्ल्स या फिडलर जैसी थ्रॉटलिंग सुविधाओं के साथ वेब डिबगिंग प्रॉक्सी का उपयोग करें ।

आप उन्हें सामान्य रूप से उपयोगी वेब विकास पाएंगे। प्रमुख अंतर यह है कि चार्ल्स शेयरवेयर है, जबकि फ़िडलर स्वतंत्र है।


आप इसे प्रॉक्सी के रूप में चलाते हैं। ब्राउज़र स्वचालित रूप से इसे जोड़ता है, और यह आपके वेब ऐप के लिए अनुरोध करता है।
बेन एम।

Fiddler के लिए, यह ब्राउज़र के अंदर / बाहर काम करने के लिए दोनों तरीके हैं।
केन डी

4

इसके अलावा, कुछ * निक्स पर एक धीमे कनेक्शन का अनुकरण करने के लिए, आप ipfw का उपयोग करके देख सकते हैं । इस Quora प्रश्न पर बेन न्यूमैन के उत्तर द्वारा अधिक जानकारी प्रदान की गई है


2

TCPMon जैसे टूल का उपयोग करें । यह धीमा कनेक्शन नकली कर सकता है।

मूल रूप से, आप इसे सटीक एक ही चीज़ के लिए अनुरोध करते हैं और यह वास्तविक सर्वर के लिए ठीक उसी अनुरोध को अग्रेषित करता है, और उसके बाद केवल सेट बाइट्स के साथ प्रतिक्रिया को विलंबित करता है।


2

आप कई नेटवर्क विशेषताओं (गति, विलंब, पैकेट हानि, आदि) का अनुकरण करने के लिए प्रॉक्सी सर्वर के रूप में नेटम (नेटवर्क एमुलेशन) का उपयोग कर सकते हैं । यह iproute2 पैकेज का उपयोग करके नेटवर्किंग को नियंत्रित करता है और यह सबसे लिनक्स वितरण के कर्नेल में सक्षम है।

इसे tcकमांड-लाइन एप्लिकेशन ( iproute2 पैकेज से) द्वारा नियंत्रित किया जाता है , लेकिन NetEm के लिए कुछ वेब इंटरफ़ेस GUI भी हैं, उदाहरण के लिए PHPnetemGUI2

लाभ यह है कि, जैसा कि मैंने लिखा है, यह न केवल विभिन्न नेटवर्क गति का अनुकरण कर सकता है, बल्कि, उदाहरण के लिए, पैकेट हानि, दोहराव और / या भ्रष्टाचार, यादृच्छिक या परिभाषित देरी, आदि, इसलिए आप विभिन्न खराब प्रदर्शन वाले नेटवर्क का अनुकरण कर सकते हैं।

आपके एप्लिकेशन के लिए यह पूरी तरह से पारदर्शी है, आप NetEm प्रॉक्सी सर्वर का उपयोग करने के लिए ऑपरेटिंग सिस्टम को कॉन्फ़िगर कर सकते हैं, इसलिए उस मशीन के सभी कनेक्शन NetEm को गर्त में ले जाएंगे। या आप इसे प्रॉक्सी के रूप में उपयोग करने के लिए केवल अपने एप्लिकेशन को कॉन्फ़िगर कर सकते हैं।

मैं इसका उपयोग विभिन्न उत्सर्जित खराब प्रदर्शन नेटवर्क पर एक Android ऐप के प्रदर्शन का परीक्षण करने के लिए कर रहा हूं।


1

10.10 के बाद से मैक OSX में मुरुस फ़ायरवॉल नामक एक ऐप है , जो आईपीएफ के प्रतिस्थापन के लिए जीयूआई के रूप में कार्य करता है।

यह सिस्टम-वाइड या डोमेन-विशिष्ट थ्रॉटलिंग के लिए बहुत अच्छी तरह से काम करता है। मैं इसका उपयोग करने में सक्षम था कि कैसे एक स्ट्रीमिंग वीडियो प्लेयर को समायोजित करने के लिए 300Kbps और 30Mbps के बीच मेरी डाउनलोड गति को स्लाइड करने के लिए।


0

WIPFW नामक एक अन्य टूल भी है - http://wipfw.sourceforge.net/

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


0

इसे अपडेट करना (इसके 9 साल बाद पूछा गया) क्योंकि मैं जिस उत्तर की तलाश कर रहा था उसका उल्लेख नहीं किया गया था:

फ़ायरफ़ॉक्स में थ्रॉटलिंग कनेक्शन गति के लिए प्रीसेट भी हैं। उन्हें डेवलपर टूल के नेटवर्क मॉनिटर टैब में खोजें । डिफ़ॉल्ट 'नो थ्रॉटलिंग' है।

सबसे धीमा जीपीआरएस ( डाउनलोड गति: 50 केबीपीएस, अपलोड गति: 20 केबीपीएस, न्यूनतम विलंबता (एमएस): 500 ), 'अच्छा' और 'नियमित' 2 जी, 3 जी और 4 जी से लेकर डीएसएल और वाईफाई तक ( डाउनलोड गति: 30Mbps, अपलोड) गति: 15 एमबीपीएस, न्यूनतम विलंबता (एमएस): 2 )।

देव टूल्स में अधिक डॉक्स


0

लिनक्स के लिए, कागजात की निम्नलिखित सूची उपयोगी हो सकती है:

व्यक्तिगत रूप से, जबकि ड्यूमनीनेट अच्छा है, मुझे लगता है कि मेरे उपयोग के मामलों के लिए नेटम सबसे अधिक बहुमुखी है; मैं आमतौर पर बैंडविड्थ (यानी वाईफाई कनेक्शन मुद्दों) के बजाय देरी के प्रभाव में दिलचस्पी रखता हूं, और यादृच्छिक पैकेट हानि / भ्रष्टाचार का अनुकरण करना बहुत आसान है, आदि यह बहुत सुलभ है, और मुफ्त (हार्डवेयर-आधारित लिंक्ट्रोपी के विपरीत) )।

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

आशा है कि यह किसी की मदद करता है!


0

एक एकल टीसीपी कनेक्शन को आकार देने का एक सामान्य मामला वास्तव में socatऔर cpipeइस तरह से यूनिक्स की दोहरी जोड़ी से इकट्ठा किया जा सकता है :

socat TCP-LISTEN:5555,reuseaddr,reuseport,fork SYSTEM:'cpipe -ngr -b 1 -s 10 | socat - "TCP:localhost:5000" | cpipe -ngr -b 1 -s 300'

यह लगभग 300kb / s बैंडविड्थ के साथ एक संबंध simulates से पर आपकी सेवा :5000और करने के लिए लगभग पर 10kb / s और पर सुनता :5555इनकमिंग कनेक्शन के लिए। कैविएट : ध्यान दें कि यह प्रति-कनेक्शन , इसलिए प्रत्येक व्यक्तिगत टीसीपी कनेक्शन को यह राशि मिलती है।

स्पष्टीकरण: बाहरी (बाएं) socatएक दिए गए विकल्पों के :5555साथ एक forking सर्वर के रूप में सुनता है। विकल्प cpipeमें पहला कमांड SYSTEM:...फिर थ्रॉटल डेटा जो सॉकेट में चला गया : 5555 (और पहले, बाहरी से बाहर आता है socat) अधिकतम 10kByte / s पर। वह डेटा तब दूसरे का उपयोग करके अग्रेषित कर रहा है socatजो कनेक्ट करता है localhost:5000(जहां आप जिस सेवा को धीमा करना चाहते हैं वह सुनना चाहिए)। डाटा से localhost:5000 तो सही में डाल दिया है cpipe/ s आदेश है, जो (दिए गए मूल्यों के साथ) 300kb के बारे में करने के लिए इसे throttles।

विकल्प -ngrके लिए cpipeमहत्वपूर्ण है। यह cpipe को इसके इनपुट फ़ाइल-डिस्क्रिप्टर से गैर-लालची रूप से पढ़ने का कारण बनता है। अन्यथा, आप बफ़र्स में डेटा अग्रेषित न होने और उत्तर की प्रतीक्षा में फंस सकते हैं।

संभवतः bufferइसके बजाय अधिक सामान्य उपकरण का उपयोग करना cpipeसंभव है।

(क्रेडिट: यह socatप्रलेखन से क्रिस्टोफ़ लूर द्वारा "डबल-टी" नुस्खा पर आधारित है )

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.