क्या यह एक नेटवर्क बैंडविड्थ अड़चन साबित होता है?


14

मैंने गलत तरीके से मान लिया है कि मेरे आंतरिक AB परीक्षण का अर्थ है कि मेरा सर्वर 1k concurrency @ 3k हिट प्रति सेकंड संभाल सकता है।

इस समय मेरा सिद्धांत यह है कि नेटवर्क अड़चन है। सर्वर पर्याप्त तेजी से पर्याप्त डेटा नहीं भेज सकता है।

Blk.io से 1k कंसेप्ट पर बाहरी परीक्षण 180 पर मेरी हिट्स / कैपिंग को दिखाता है, जिसमें पेजों को अधिक समय तक और लंबे समय तक जवाब देना होता है क्योंकि सर्वर केवल 180 प्रति सेकंड वापस करने में सक्षम है।

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

मैंने nginx से एक रिक्त फ़ाइल की सेवा की है और इसे बेक किया है: यह 1: 1 के साथ संगामिति करता है।

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

अब IO / मेम्केडेड अड़चनों को नियंत्रित करने के लिए (nginx आम तौर पर मेम्केड से खींचता है), मैं फाइल सिस्टम से कैश्ड पृष्ठ का एक स्थैतिक संस्करण तैयार करता हूं।

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

परिणाम मेरे मूल परीक्षण के समान हैं; मैं लगभग 180 RPS पर छाया हुआ हूं।

एचटीएमएल पेज को आधे में विभाजित करने से मुझे आरपीएस दोगुना हो जाता है, इसलिए यह निश्चित रूप से पेज के आकार तक सीमित है।

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

यदि मैं स्थानीय सर्वर से ApacheBench का आंतरिक रूप से उपयोग करता हूं, तो मुझे उच्च अंतरण दर पर पूर्ण पृष्ठ और आधे पृष्ठ दोनों पर लगभग 4k RPS के लगातार परिणाम मिलते हैं। अंतरण दर: 62586.14 [किबीट्स / सेकंड] प्राप्त किया

यदि मैं एक बाहरी सर्वर से AB करता हूं, तो मुझे लगभग 180RPS मिलता है - वही ब्लिट्ज.आईओ परिणाम।

मुझे कैसे पता चलेगा कि यह जानबूझकर थ्रॉटलिंग नहीं है?

यदि मैं कई बाहरी सर्वरों से बेंचमार्क करता हूं, तो सभी परिणाम खराब हो जाते हैं जो मुझे विश्वास दिलाता है कि समस्या मेरे सर्वरों के आउटबाउंड ट्रैफ़िक में है, न कि मेरे बेंचमार्किंग सर्वरों / ब्लिट्ज़.आईओ के साथ डाउनलोड गति का मुद्दा।

इसलिए मैं अपने निष्कर्ष पर वापस लौट आया हूं कि मेरा सर्वर तेजी से डेटा नहीं भेज सकता है।

क्या मैं सही हू? क्या इस डेटा की व्याख्या करने के अन्य तरीके हैं? क्या कई सर्वरों को लोड करने के लिए समाधान / अनुकूलन + लोड संतुलन है जो प्रत्येक प्रति सेकंड 180 हिट की सेवा कर सकता है?

मैं सर्वर अनुकूलन के लिए काफी नया हूं, इसलिए मैं इस डेटा की व्याख्या करने वाली किसी भी पुष्टि की सराहना करता हूं।


बाहर का यातायात

यहां आउटबाउंड बैंडविड्थ के बारे में अधिक जानकारी दी गई है: नेटवर्क ग्राफ 16 एमबी / सेकंड: 16 मेगाबिट्स प्रति सेकंड का अधिकतम आउटपुट दिखाता है। बहुत ज्यादा आवाज नहीं करता है।

थ्रॉटलिंग के बारे में एक सुझाव के कारण, मैंने इस पर ध्यान दिया और पाया कि लिनोड में 50mbps कैप है (जो कि मैं मारने के करीब भी नहीं हूं, जाहिरा तौर पर)। मैंने इसे 100mbps तक बढ़ा दिया था।

चूँकि लाइनोड मेरे ट्रैफ़िक को नियंत्रित करता है, और मैं इसे मार भी नहीं रहा हूँ, इसका मतलब यह है कि मेरा सर्वर वास्तव में 100mbps तक आउटपुट देने में सक्षम होना चाहिए लेकिन कुछ अन्य आंतरिक अड़चनों द्वारा सीमित है? मुझे समझ में नहीं आता कि इस बड़े पैमाने पर नेटवर्क कैसे काम करता है; क्या वे सचमुच HDD से पढ़ सकते हैं जितना डेटा तेजी से भेज सकते हैं? क्या नेटवर्क पाइप इतना बड़ा है?

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


निष्कर्ष के तौर पर

1: उपरोक्त के आधार पर, मैं सोच रहा हूं कि मैं निश्चित रूप से एलबी के पीछे प्रति सर्वर 180RPS पर एक बहु nginx सर्वर सेटअप के ऊपर एक nginx लोड बैलेंसर जोड़कर अपना 180RPS बढ़ा सकता हूं।

2: यदि लिनोइड में 50/100 मीबिट की सीमा है, जिसे मैं बिल्कुल नहीं मार रहा हूं, तो ऐसा कुछ होना चाहिए जिससे मैं अपने सिंगल सर्वर सेटअप के साथ उस सीमा को हिट कर सकूं। अगर मैं डेटा को स्थानीय स्तर पर तेजी से पढ़ / प्रसारित कर सकता हूं, और यहां तक ​​कि लाइनोड भी 50mbit / 100mbit कैप को परेशान करता है, तो एक आंतरिक अड़चन होनी चाहिए जो मुझे उन कैप को हिट करने की अनुमति नहीं दे रही है जो मुझे पता नहीं है कि कैसे पता लगाया जाए। सही बात?

मुझे एहसास है कि सवाल बहुत बड़ा और अस्पष्ट है, लेकिन मुझे यकीन नहीं है कि इसे कैसे गाढ़ा जाए। मेरे द्वारा किए गए किसी भी निष्कर्ष पर किसी भी इनपुट की सराहना की जाती है।


1
यह जाँचने के लिए कि क्या यह बैंडविड्थ की समस्या है, आप अपने html पृष्ठ को अधिक बड़ा बना सकते हैं ताकि एक ही बैंडविड्थ बहुत कम अनुरोधों के साथ पहुँच सके। यदि आपका पृष्ठ उदाहरण 5MB बड़ा है, तो आपको केवल कुछ अनुरोधों / सेकंड के साथ उसी थ्रूपुट तक पहुंचने में सक्षम होना चाहिए, जिसमें बहुत कम ओवरहेड होना चाहिए और इसलिए आप अपनी वास्तविक बैंडविड्थ सीमा के करीब पहुंच सकते हैं।
2099 में brain99

मैंने अभी एक पृष्ठ का परीक्षण किया है जो आकार में ठीक 10x है। मेरा आरपीएस सीधे पेज के आकार से संबंधित है। 10x बड़ा == 18RPS। 1x == 180. मुझे वास्तव में लगता है कि यह संदिग्ध रूप से 50mbits के करीब है। मुझे लगता है कि वहाँ एक मौका लाइनोड की स्थिति की निगरानी अधिकतम 24mbits गलत हो सकता है, और मैं वास्तव में उनकी टोपी मार रहा हूँ। मैं फिर से वृद्धि के लिए कह रहा हूं और वापस रिपोर्ट करूंगा।
युजी तोमिता

जवाबों:


5

मुद्दा मुझे लगता है कि linode.com ग्राफ चोटियों सच चोटियों थे। यह पता चलता है कि ग्राफ 5 मिनट के औसत डेटा बिंदुओं का उपयोग करता है, इस प्रकार मेरी चोटी 24mbits दिखाई देती है जब वास्तव में मैं 50mbit टोपी मार रहा था।

अब जब उन्होंने इसे 100mbits तक बढ़ा दिया है, तो मेरे बेंचमार्क तुरंत नई आउटबाउंड ट्रैफिक सीमा तक बढ़ गए।

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

अब, मैं प्रति सेकंड 370 अनुरोधों पर शिखर पर हूं, जो कि 100mbps के ठीक नीचे है, जिस बिंदु पर मुझे अनुरोधों का "बैकलॉग" मिलना शुरू हो जाता है, और प्रतिक्रिया समय बढ़ने लगता है।

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

अब मैं पृष्ठ को सिकोड़कर अधिकतम समरूपता बढ़ा सकता हूं; gzip के साथ मैंने 600RPS सक्षम किया है।

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

मैं तब भी समस्याओं में भागता हूं जब मैं अचानक चरम पर होता हूं और लंबित अनुरोधों (बैंडविड्थ द्वारा सीमित) का बैकलॉग जमा होना शुरू हो जाता है, लेकिन यह एक अलग प्रश्न की तरह लगता है।

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

यह अनुकूलन / इस डेटा को पढ़ने / संभावित समस्याओं को कम करने में एक बड़ा सबक रहा है। आपके सहयोग के लिए बहुत धन्यवाद!


4

थोड़ा देर हो चुकी है कि आपने इसे समझ लिया है ... लेकिन शायद आपको समय-समय पर सर्वरफॉल्ट ब्लॉग को पढ़ने पर विचार करना चाहिए।

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

हमने पाया कि हम केवल 10-30 MBit / s की दर से 1 Gbit / s इंटरफेस पर पैकेट को बहुत बार छोड़ रहे थे जो हमारे प्रदर्शन को नुकसान पहुंचाता है। ऐसा इसलिए है क्योंकि 10-30 MBit / s दर वास्तव में बिट्स की संख्या है जो प्रति 5 मिनट में एक दूसरी दर में परिवर्तित हो जाती है। जब हमने विर्सार्क के साथ करीब से खुदाई की और एक मिलीसेकंड आईओ ग्राफिंग का इस्तेमाल किया, तो हमने देखा कि हम अक्सर तथाकथित 1 Gbit / s इंटरफेस के 1 मिली प्रति सेकंड की दर से फट जाएगा।

ज़रूर सोचा मुझे और मुझे सिर्फ इतना पता है कि मैं अपनी दुकान पर दूसरे एसएएस में से एक को काट रहा हूं, जो मुझे पहला मौका मिला है, और जब हम इस समस्या को मारेंगे, तो यह बहुत ही शानदार और भयावह लगेगा।

कौन जानता है, मैं भी उनमें से कुछ को गुप्त में दे सकता हूं। :)


अच्छी बात! दिलचस्प है कि उन्होंने 5 मिनट का ग्राफ @ 1 सेकंड की दर भी लाया ... मैं डेटा के साथ अपेक्षाकृत सहज हूं क्योंकि 1k समवर्ती की मेरी परीक्षा पहले से ही सबसे खराब स्थिति है (मुझे लगता है ..)। ~ 600 उपयोगकर्ता प्रति सेकंड एक पेज लोड कर रहे हैं == ~ 2 मीटर एक घंटा हिट करते हैं, जो हमें करीब भी नहीं मिलता है। मैं बस स्पाइक के पहले कुछ मिनटों में नीचे नहीं उतरना चाहता था।
युजी तोमिता

0

यह नेटवर्क द्वारा सीमित हो सकता है, लेकिन जरूरी नहीं कि यह केवल बैंडविड्थ का सवाल हो। आपकी दूरस्थ परीक्षण इकाई की विलंबता का किसी भी समय लंबित कनेक्शनों की संख्या पर प्रभाव पड़ेगा (स्वीकार करने के लिए 50ms प्रतीक्षा करना स्थानीय रूप से .5ms की तुलना में बहुत अलग है) और साथ ही कनेक्शन की प्रगति के साथ खिड़की के आकार की बातचीत और स्थिरीकरण पर। आपको पैकेट नुकसान की कुछ राशि के संपर्क में आने की संभावना है - या तो भीड़ के कार्य के रूप में या आपके वाहक (या उन अपस्ट्रीम) के हिस्से पर बैंडविड्थ सीमा के तंत्र के रूप में।

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

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

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