मैंने गलत तरीके से मान लिया है कि मेरे आंतरिक 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 कैप को परेशान करता है, तो एक आंतरिक अड़चन होनी चाहिए जो मुझे उन कैप को हिट करने की अनुमति नहीं दे रही है जो मुझे पता नहीं है कि कैसे पता लगाया जाए। सही बात?
मुझे एहसास है कि सवाल बहुत बड़ा और अस्पष्ट है, लेकिन मुझे यकीन नहीं है कि इसे कैसे गाढ़ा जाए। मेरे द्वारा किए गए किसी भी निष्कर्ष पर किसी भी इनपुट की सराहना की जाती है।