1. प्रश्न
एक एसिंक्रोनस ऑर्डर-प्रोसेसिंग सर्विस पीक ट्रैफ़िक पर धीमी हो जाती है। मॉनिटरिंग से पता चलता है कि थ्रूपुट 200 req/s के करीब स्थिर है और एंड-टू-एंड औसत लेटेंसी लगभग 150 ms है। इन-फ़्लाइट अनुरोधों का अनुमान लगाने के लिए Little's Law का उपयोग करें, लेटेंसी, थ्रूपुट और कतारों के बीच संबंध समझाएं, और ऐसे इंजीनियरिंग कदम प्रस्तावित करें जो अस्थिर बैकलॉग को रोकते हों।
2. बाधाएं और स्पष्टीकरण
- Little's Law एक स्थिर सिस्टम के लिए दीर्घकालिक औसत का वर्णन करता है:
L = λW, जहाँ L सिस्टम में औसत कार्य है, λ औसत थ्रूपुट है, और W सिस्टम में औसत समय है। - माप विंडो, अनुरोध सीमा और इकाइयों का उल्लेख करें; एक छोटे बर्स्ट या एक अस्थिर सिस्टम को दीर्घकालिक औसत नहीं माना जा सकता है।
- सर्विस समय, कतार समय और एंड-टू-एंड निवास (residence) समय को अलग करें, अन्यथा कॉनकरेंसी और थ्रेड-पूल का आकार कम आंका जाएगा।
- क्षमता सीमा, टाइमआउट नीति, प्राथमिकताएं और ड्रॉप किए जा सकने वाले कार्य को स्पष्ट करें।
3. मुख्य व्युत्पत्ति (Core derivation)
200 req/s को 0.15 s से गुणा करने पर सिस्टम में औसतन L = 30 अनुरोध मिलते हैं। यह अधिकतम 30 अनुरोध नहीं है और न ही p99 कॉनकरेंसी है; यह उस विंडो के लिए औसत इन्वेंट्री है। यदि थ्रूपुट स्थिर रहता है जबकि औसत निवास समय दोगुना हो जाता है, तो औसत इन-फ़्लाइट कार्य भी दोगुना हो जाता है, जो आमतौर पर बढ़ती हुई कतार या धीमी निर्भरता (dependency) का संकेत देता है।
4. संदर्भ विश्लेषण
lambda = 200 # requests / second
W = 0.150 # seconds / request
L = lambda * W # 30 requests in the system on average
if arrival_rate > sustainable_service_rate:
queue grows without a stable bound
apply_admission_control_or_scale_out()
capacity = concurrency_limit / target_latencyमापें कि कार्य कतार में कब प्रवेश करता है, प्रोसेसिंग कब शुरू होती है, और कब पूरा होता है। Little's Law क्षमता की एक अनुमानित सीमा तय कर सकता है: 100 की कॉनकरेंसी सीमा और 200 ms के लक्षित औसत निवास समय के साथ, स्थिर थ्रूपुट लगभग 500 req/s होता है। टेल लेटेंसी, बर्स्ट और निर्भरता जिटर के लिए हेडरूम छोड़ें।
5. ओवरलोड मामले और ट्रेड-ऑफ़
जब अराइवल दर सर्विस दर से अधिक बनी रहती है, तो कतार बढ़ती है, W बढ़ता है, और L बढ़ता है, जिससे टाइमआउट और पुनः प्रयासों (retries) का एक फीडबैक लूप बनता है। एक अनबाउंड कतार केवल विफलता में देरी करती है; जब कार्य अंततः पूरा होता है तो वह अनुपयोगी हो सकता है। बाउंडेड कतारों, फेल-फास्ट व्यवहार, प्राथमिकताओं, लोड शेडिंग, बैकप्रेशर या स्केल-आउट का उपयोग करें। प्रत्येक नीति में यह बताया जाना चाहिए कि कौन सा कार्य ड्रॉप किया गया है और कॉलर्स को कैसे सूचित किया जाता है।
6. सत्यापन और ऑब्जर्वेबिलिटी
- समय विंडो के अनुसार अराइवल दर, पूर्णता दर, इन-फ़्लाइट कार्य और औसत के साथ-साथ p95/p99 लेटेंसी रिकॉर्ड करें।
- इकाई या सैंपलिंग-सीमा त्रुटियों को पकड़ने के लिए
L,λऔरWके तीन स्वतंत्र मापों की क्रॉस-जांच करें। - एक नियंत्रित लोड परीक्षण चलाएं जो धीरे-धीरे अराइवल दर बढ़ाता है और कतार की लंबाई, टाइमआउट दर और रिकवरी समय का अवलोकन करता है।
- कतार की गहराई, आयु, कॉनकरेंसी, अस्वीकृति दर और पुनः प्रयासों पर अलर्ट लगाएं; सत्यापित करें कि स्केलिंग या लोड शेडिंग के बाद वे कितनी तेजी से गिरते हैं।
7. सामान्य गलतियाँ
- औसत L को एक सख्त कॉनकरेंसी सीमा मानना और बर्स्ट, टेल लेटेंसी और कतार वितरण की अनदेखी करना।
- एंड-टू-एंड W के बजाय सर्विस समय का उपयोग करना और नेटवर्क, लॉक और निर्भरता प्रतीक्षा को छोड़ देना।
- सिस्टम के स्थिर होने से पहले एक छोटे नमूने से दीर्घकालिक क्षमता का अनुमान लगाना।
- उत्पादकों (producers) को सीमित किए बिना उपभोक्ताओं (consumers) को स्केल करना, जिससे साझा निर्भरताएं या डाउनस्ट्रीम कतारें ओवरलोड रह जाती हैं।
8. साक्षात्कार स्कोरिंग बिंदु
सूत्र में सही प्रतिस्थापन करता है
उम्मीदवार इकाइयों को सुसंगत रखता है, 200 × 0.15 = 30 की गणना करता है, और समझाता है कि यह एक सीमा के बजाय औसत इन-फ़्लाइट कार्य है।
समय सीमाओं को परिभाषित करता है
उम्मीदवार कतार, सर्विस और एंड-टू-एंड समय को अलग करता है और सैंपलिंग विंडो और स्थिरता की धारणा को स्पष्ट करता है।
ओवरलोड फीडबैक को पहचानता है
उम्मीदवार बताता है कि सर्विस दर से ऊपर अराइवल दर कैसे कतार, लेटेंसी, पुनः प्रयासों और कॉनकरेंसी को बढ़ाती है, फिर बाउंडेड नियंत्रण प्रस्तावित करता है।
डेटा के साथ क्षमता को सत्यापित करता है
उम्मीदवार एक एकल औसत संख्या की रिपोर्ट करने के बजाय लोड परीक्षण, p95/p99, कतार आयु, अस्वीकृति दर और रिकवरी समय का उपयोग करता है।