Apigee Edge दस्तावेज़ देखा जा रहा है.
Apigee X दस्तावेज़ पर जाएं. जानकारी
स्पाइक अररेस्ट नीति <Rate>
एलिमेंट के साथ ट्रैफ़िक में होने वाली बढ़ोतरी से बचाती है. यह एलिमेंट, एपीआई प्रॉक्सी से प्रोसेस किए गए और बैकएंड को भेजे जाने वाले अनुरोधों की संख्या को थ्रॉटल करता है. इससे परफ़ॉर्मेंस लैग और डाउनटाइम से सुरक्षा मिलती है.
<SpikeArrest>
एलिमेंट
यह वीडियो, स्पाइक अरेस्ट के लिए बनी नीति के बारे में बताता है.
डिफ़ॉल्ट वैल्यू | नीचे डिफ़ॉल्ट नीति टैब देखें |
ज़रूरी है? | ज़रूरी नहीं |
स्ट्रीम किस तरह की है | कॉम्प्लेक्स ऑब्जेक्ट |
पैरंट एलिमेंट | लागू नहीं |
चाइल्ड एलिमेंट |
<Identifier> <MessageWeight> <Rate> (ज़रूरी है)<UseEffectiveCount> |
सिंटैक्स
<SpikeArrest>
एलिमेंट, इस सिंटैक्स का इस्तेमाल करता है:
<SpikeArrest continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <DisplayName>display_name</DisplayName> <Properties/> <Identifier ref="flow_variable"/> <MessageWeight ref="flow_variable"/> <Rate ref="flow_variable">rate[pm|ps]</Rate> <UseEffectiveCount>[false|true]</UseEffectiveCount> </SpikeArrest>
डिफ़ॉल्ट नीति
नीचे दिए गए उदाहरण में, जब एज यूज़र इंटरफ़ेस (यूआई) में आपके फ़्लो में स्पाइक अरेस्ट नीति जोड़ी जाती है, तो डिफ़ॉल्ट सेटिंग दिखती हैं:
<SpikeArrest async="false" continueOnError="false" enabled="true" name="Spike-Arrest-1"> <DisplayName>Spike Arrest-1</DisplayName> <Properties/> <Identifier ref="request.header.some-header-name"/> <MessageWeight ref="request.header.weight"/> <Rate>30ps</Rate> <UseEffectiveCount>true</UseEffectiveCount> </SpikeArrest>
इस एलिमेंट में ये एट्रिब्यूट शामिल होते हैं, जो सभी नीतियों में शामिल हैं:
एट्रिब्यूट | डिफ़ॉल्ट | ज़रूरी है? | ब्यौरा |
---|---|---|---|
name |
लागू नहीं | ज़रूरी |
नीति का अंदरूनी नाम. इसके अलावा, मैनेजमेंट एलिमेंट के यूज़र इंटरफ़ेस (यूआई) प्रॉक्सी एडिटर में, नीति एलिमेंट को किसी अलग नाम से इस्तेमाल करने के लिए, |
continueOnError |
गलत | ज़रूरी नहीं | नीति के काम न करने पर गड़बड़ी दिखाने के लिए, "गलत" पर सेट करें. ज़्यादातर नीतियों के लिए इस तरीके का इस्तेमाल किया जाना चाहिए. नीति लागू न होने के बाद भी फ़्लो चलाने के लिए, "सही" पर सेट करें. |
enabled |
सही | ज़रूरी नहीं | नीति लागू करने के लिए, "सही" पर सेट करें. नीति को "बंद" करने के लिए "गलत" पर सेट करें. अगर नीति किसी फ़्लो से जुड़ी हुई हो, तो भी उसे लागू नहीं किया जाएगा. |
async |
गलत | बहिष्कृत | इस एट्रिब्यूट के इस्तेमाल पर रोक लगा दी गई है. |
उदाहरण
यहां दिए गए उदाहरणों में, स्पाइक अरेस्ट नीति को इस्तेमाल करने के कुछ तरीके बताए गए हैं:
उदाहरण 1
इस उदाहरण में दर को पांच प्रति सेकंड पर सेट किया गया है:
<SpikeArrest name="Spike-Arrest-1"> <Rate>5ps</Rate> </SpikeArrest>
इस नीति के तहत, हर 200 मिलीसेकंड (1,000/5) पर एक अनुरोध मिलने की दर को सीमित कर दिया गया है.
उदाहरण 2
इस उदाहरण में दर को 12 प्रति मिनट पर सेट किया गया है:
<SpikeArrest name="Spike-Arrest-1"> <Rate>12pm</Rate> </SpikeArrest>
इस उदाहरण में दी गई नीति के मुताबिक, हर पांचसेकंड (60/12) में एक बार अनुरोध मिलने की दर को सीमित कर दिया गया है.
तीसरा उदाहरण
इस उदाहरण में, अनुरोधों के लिए एक मिनट की सीमा तय की गई है. हर मिनट के लिए एक बार अनुरोध किया जा सकता है या हर 12 सेकंड में एक अनुरोध किया जा सकता है:
<SpikeArrest name="Spike-Arrest-1"> <Rate>12pm</Rate> <Identifier ref="client_id" /> <MessageWeight ref="request.header.weight" /> </SpikeArrest>
इसके अलावा, <MessageWeight>
एलिमेंट एक कस्टम वैल्यू (weight
हेडर) स्वीकार करता है, जो खास ऐप्लिकेशन या क्लाइंट के लिए मैसेज के वज़न को अडजस्ट करता है. इससे,
<Identifier>
एलिमेंट की मदद से पहचानी गई इकाइयों के लिए, थ्रॉटल की सुविधा पर ज़्यादा कंट्रोल मिलता है.
उदाहरण 4
इस उदाहरण में, स्पाइक अरेस्ट को रनटाइम वैल्यू खोजने का निर्देश दिया गया है. यह वैल्यू, request.header.runtime_rate
फ़्लो वैरिएबल के तौर पर सबमिट किए गए अनुरोध के ज़रिए सेट की गई है:
<SpikeArrest name="Spike-Arrest-1"> <Rate ref="request.header.runtime_rate" /> </SpikeArrest>
फ़्लो वैरिएबल की वैल्यू intpm
या
intps
के रूप में होनी चाहिए.
यह उदाहरण आज़माने के लिए, इस तरह का अनुरोध करें:
curl http://myorg-myenv.apigee.net/price -H 'runtime_rate:30ps'
चाइल्ड एलिमेंट का रेफ़रंस
इस सेक्शन में <SpikeArrest>
के चाइल्ड एलिमेंट के बारे में बताया गया है.
<DisplayName>
मैनेजमेंट यूज़र इंटरफ़ेस (यूआई) प्रॉक्सी एडिटर में
नीति को एक अलग और ज़्यादा आम लगने वाले नाम से लेबल करने के लिए, name
एट्रिब्यूट के साथ-साथ इसका इस्तेमाल करें.
<DisplayName>
एलिमेंट सभी नीतियों के लिए समान है.
डिफ़ॉल्ट वैल्यू | लागू नहीं |
ज़रूरी है? | ज़रूरी नहीं. <DisplayName> को छोड़ने पर, नीति की name एट्रिब्यूट की वैल्यू का इस्तेमाल किया जाता है |
स्ट्रीम किस तरह की है | स्ट्रिंग |
पैरंट एलिमेंट | <PolicyElement> |
बच्चों के एलिमेंट | कभी नहीं |
<DisplayName>
एलिमेंट इस सिंटैक्स का इस्तेमाल करता है:
सिंटैक्स
<PolicyElement> <DisplayName>policy_display_name</DisplayName> ... </PolicyElement>
उदाहरण
<PolicyElement> <DisplayName>My Validation Policy</DisplayName> </PolicyElement>
<DisplayName>
एलिमेंट में कोई एट्रिब्यूट या चाइल्ड एलिमेंट नहीं है.
<Identifier>
इसकी मदद से, अनुरोधों को ग्रुप में बांटने का तरीका चुना जा सकता है, ताकि क्लाइंट के आधार पर स्पाइक अरेस्ट नीति को लागू किया जा सके. उदाहरण के लिए, डेवलपर आईडी के हिसाब से, अनुरोधों को ग्रुप में बांटा जा सकता है. इस स्थिति में, हर डेवलपर के अनुरोध को उनकी साइट के स्पाइक अरेस्ट रेट के तहत गिना जाएगा, न कि प्रॉक्सी के सभी अनुरोधों के लिए.
अनुरोध की थ्रॉटलिंग को बेहतर तरीके से कंट्रोल करने के लिए, <MessageWeight>
एलिमेंट के साथ इसका इस्तेमाल करें.
अगर <Identifier>
एलिमेंट को खाली छोड़ा जाता है, तो उस एपीआई प्रॉक्सी में सभी अनुरोधों के लिए
एक दर की सीमा लागू की जाती है.
डिफ़ॉल्ट वैल्यू | लागू नहीं |
ज़रूरी है? | ज़रूरी नहीं |
स्ट्रीम किस तरह की है | स्ट्रिंग |
पैरंट एलिमेंट |
<SpikeArrest>
|
चाइल्ड एलिमेंट | कभी नहीं |
सिंटैक्स
<SpikeArrest continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Identifier ref="flow_variable"/> </SpikeArrest>
उदाहरण 1
यहां दिए गए उदाहरण में, हर डेवलपर आईडी के हिसाब से स्पाइक अरेस्ट नीति लागू होती है:
<SpikeArrest name="Spike-Arrest-1"> <Identifier ref="developer.id"/> <Rate>42pm</Rate/> </SpikeArrest>
यहां दी गई टेबल में <Identifier>
के एट्रिब्यूट के बारे में बताया गया है:
एट्रिब्यूट | ब्यौरा | डिफ़ॉल्ट | मौजूदगी |
---|---|---|---|
ref |
यह उस वैरिएबल की पहचान करता है जिसके ज़रिए स्पाइक अरेस्ट, आने वाले अनुरोधों को ग्रुप करता है. किसी यूनीक क्लाइंट की जानकारी देने के लिए, किसी भी फ़्लो वैरिएबल का इस्तेमाल किया जा सकता है. उदाहरण के लिए, ऐसे क्लाइंट जो VerifyAPIKey नीति के साथ उपलब्ध हैं. JavaScript की नीति या AssignmentMessage नीति का इस्तेमाल करके, कस्टम वैरिएबल भी सेट किए जा सकते हैं. | लागू नहीं | ज़रूरी है |
इस एलिमेंट के बारे में Apigee कम्यूनिटी पोस्ट में भी बताया गया है: http://community.apigee.com/questions/2807/how-does-the-edge-quota-policy-work-when-no-identi.html.
<MessageWeight>
इससे हर मैसेज के लिए तय किए गए महत्व की जानकारी मिलती है. मैसेज के वज़न से, स्पाइक अरेस्ट रेट के हिसाब से किसी एक अनुरोध के असर में बदलाव होता है. मैसेज का वज़न, फ़्लो वैरिएबल हो सकता है. जैसे, एचटीटीपी हेडर, क्वेरी पैरामीटर, फ़ॉर्म पैरामीटर या मैसेज के मुख्य हिस्से का कॉन्टेंट. JavaScript नीति या AssignmentMessage नीति में जाकर भी कस्टम वैरिएबल का इस्तेमाल किया जा सकता है.
खास क्लाइंट या ऐप्लिकेशन के अनुरोधों को और कम करने के लिए,
<Identifier>
के साथ इस्तेमाल करें.
उदाहरण के लिए, अगर स्पाइक अरेस्ट <Rate>
10pm
है और कोई ऐप्लिकेशन, 2
के वज़न के साथ अनुरोध सबमिट करता है, तो उस क्लाइंट को हर मिनट सिर्फ़ पांच मैसेज भेजने की अनुमति होगी. ऐसा इसलिए, क्योंकि हर अनुरोध को दो मैसेज के तौर पर गिना जाता है.
डिफ़ॉल्ट वैल्यू | लागू नहीं |
ज़रूरी है? | ज़रूरी नहीं |
स्ट्रीम किस तरह की है | पूर्णांक |
पैरंट एलिमेंट |
<SpikeArrest>
|
चाइल्ड एलिमेंट | कभी नहीं |
सिंटैक्स
<SpikeArrest continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <MessageWeight ref="flow_variable"/> </SpikeArrest>
उदाहरण 1
इस उदाहरण में, अनुरोधों के लिए एक मिनट की सीमा तय की गई है. हर मिनट के लिए एक बार अनुरोध किया जा सकता है या हर 12 सेकंड में एक अनुरोध किया जा सकता है:
<SpikeArrest name="Spike-Arrest-1"> <Rate>12pm</Rate> <Identifier ref="client_id" /> <MessageWeight ref="request.header.weight" /> </SpikeArrest>
इस उदाहरण में, <MessageWeight>
एक कस्टम वैल्यू (अनुरोध में weight
हेडर) स्वीकार करता है, जो खास क्लाइंट के लिए मैसेज का वज़न अडजस्ट करता है. इससे,
<Identifier>
एलिमेंट की मदद से पहचानी गई इकाइयों के लिए, थ्रॉटल की सुविधा पर ज़्यादा कंट्रोल मिलता है.
यहां दी गई टेबल में <MessageWeight>
के एट्रिब्यूट के बारे में बताया गया है:
एट्रिब्यूट | ब्यौरा | मौजूदगी | डिफ़ॉल्ट |
---|---|---|---|
ref |
यह उस फ़्लो वैरिएबल की पहचान करता है जिसमें खास क्लाइंट के मैसेज का वेट शामिल होता है. यह फ़्लो वैरिएबल हो सकता है, जैसे कि एचटीटीपी क्वेरी पैरामीटर, हेडर या मैसेज का मुख्य हिस्सा. ज़्यादा जानकारी के लिए, फ़्लो वैरिएबल का रेफ़रंस देखें. JavaScript नीति या AssignmentMessage नीति का इस्तेमाल करके, कस्टम वैरिएबल भी सेट किए जा सकते हैं. | ज़रूरी है | लागू नहीं |
<Rate>
यह हर मिनट या प्रति सेकंड के अंतराल में मंज़ूर किए जाने वाले अनुरोधों की संख्या तय करके, ट्रैफ़िक में बढ़ोतरी (या बर्स्ट) की दर तय करता है. इस एलिमेंट को <Identifier>
और <MessageWeight>
के साथ भी इस्तेमाल किया जा सकता है. इससे, क्लाइंट से वैल्यू स्वीकार करके, रनटाइम के दौरान ट्रैफ़िक को आसानी से थ्रॉटल किया जा सकता है.
डिफ़ॉल्ट वैल्यू | लागू नहीं |
ज़रूरी है? | ज़रूरी है |
स्ट्रीम किस तरह की है | पूर्णांक |
पैरंट एलिमेंट |
<SpikeArrest>
|
चाइल्ड एलिमेंट | कभी नहीं |
सिंटैक्स
किराये की जानकारी इनमें से किसी एक तरीके से दी जा सकती है:
- वह स्टैटिक रेट जिसे
<Rate>
एलिमेंट के मुख्य हिस्से के तौर पर तय किया जाता है - ऐसी वैरिएबल वैल्यू जिसे क्लाइंट पास कर सकता है. फ़्लो वैरिएबल के नाम की पहचान करने के लिए,
ref
एट्रिब्यूट का इस्तेमाल करें
<SpikeArrest continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Rate ref="flow_variable">rate[pm|ps]</Rate> </SpikeArrest>
दर की मान्य वैल्यू (जिन्हें वैरिएबल की वैल्यू के तौर पर या एलिमेंट के मुख्य हिस्से में बताया जा सकता है), इन फ़ॉर्मैट के मुताबिक होने चाहिए:
intps
(प्रति सेकंड अनुरोधों की संख्या, मिलीसेकंड के अंतराल में सरल)intpm
(प्रति मिनट अनुरोधों की संख्या, जिन्हें सेकंड के अंतराल में स्मूद किया जाता है)
int की वैल्यू एक धनात्मक पूर्णांक होनी चाहिए.
उदाहरण 1
इस उदाहरण में रेट को पांच अनुरोध प्रति सेकंड पर सेट किया गया है:
<SpikeArrest name="Spike-Arrest-1"> <Rate>5ps</Rate> </SpikeArrest>
इस नीति के तहत, हर 200 मिलीसेकंड (1,000/5) पर एक अनुरोध मिलने की दर को सीमित कर दिया गया है.
उदाहरण 2
इस उदाहरण में दर को 12 अनुरोध प्रति मिनट पर सेट किया गया है:
<SpikeArrest name="Spike-Arrest-1"> <Rate>12pm</Rate> </SpikeArrest>
इस उदाहरण में दी गई नीति के मुताबिक, हर पांचसेकंड (60/12) में एक बार अनुरोध मिलने की दर को सीमित कर दिया गया है.
यहां दी गई टेबल में <Rate>
के एट्रिब्यूट के बारे में बताया गया है:
एट्रिब्यूट | ब्यौरा | मौजूदगी | डिफ़ॉल्ट |
---|---|---|---|
ref |
यह ऐसे फ़्लो वैरिएबल की पहचान करता है जो दर की जानकारी देता है. यह फ़्लो वैरिएबल हो सकता है, जैसे कि एचटीटीपी क्वेरी पैरामीटर, हेडर या मैसेज का मुख्य हिस्सा या केवीएम जैसी कोई वैल्यू. ज़्यादा जानकारी के लिए, फ़्लो वैरिएबल का रेफ़रंस देखें.
JavaScript नीति या AssignmentMessage नीति में कस्टम वैरिएबल का इस्तेमाल भी किया जा सकता है. अगर उदाहरण के लिए: <Rate ref="request.header.custom_rate">1pm</Rate> इस उदाहरण में, अगर क्लाइंट "custom_rate" हेडर को पास नहीं करता है, तो सभी क्लाइंट के लिए, एपीआई प्रॉक्सी की दर एक अनुरोध प्रति मिनट होगी. अगर क्लाइंट "custom_rate" हेडर को पास करता है, तो प्रॉक्सी सर्वर का इस्तेमाल करने वाले सभी क्लाइंट के लिए, अनुरोध की दर की सीमा 10 अनुरोध प्रति सेकंड हो जाती है. ऐसा तब तक होता है, जब तक "custom_rate" हेडर के बिना अनुरोध नहीं भेजा जाता. अलग-अलग तरह के क्लाइंट के लिए, पसंद के मुताबिक दरें लागू करने के लिए, अनुरोधों को ग्रुप करने के लिए अगर आपने |
ज़रूरी नहीं | लागू नहीं |
<UseEffectiveCount>
ऑटो-स्केलिंग ग्रुप का इस्तेमाल करते समय, मैसेज प्रोसेसर (एमपी) में आपकी स्पाइक अरेस्ट संख्या को डिस्ट्रिब्यूट करता है.
सिंटैक्स
<SpikeArrest continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <UseEffectiveCount>[false|true]</UseEffectiveCount> </SpikeArrest>
उदाहरण 1
नीचे दिया गया उदाहरण <UseEffectiveCount>
को 'सही' पर सेट करता है:
<SpikeArrest name='Spike-Arrest-1'> <Rate>40ps</Rate> <UseEffectiveCount>true</UseEffectiveCount> </SpikeArrest>
<UseEffectiveCount>
एलिमेंट ज़रूरी नहीं है. अगर स्पाइक अरेस्ट नीति से किसी एलिमेंट को हटा दिया जाता है, तो डिफ़ॉल्ट वैल्यू false
होती है.
डिफ़ॉल्ट वैल्यू | गलत |
ज़रूरी है? | ज़रूरी नहीं |
स्ट्रीम किस तरह की है | बूलियन |
पैरंट एलिमेंट |
<SpikeArrest>
|
चाइल्ड एलिमेंट | कभी नहीं |
यहां दी गई टेबल में <UseEffectiveCount>
एलिमेंट के एट्रिब्यूट के बारे में बताया गया है:
एट्रिब्यूट | ब्यौरा | डिफ़ॉल्ट | मौजूदगी |
---|---|---|---|
ref |
उस वैरिएबल की पहचान करता है जिसमें <UseEffectiveCount> की वैल्यू होती है. यह फ़्लो वैरिएबल हो सकता है, जैसे कि एचटीटीपी क्वेरी पैरामीटर, हेडर या मैसेज का मुख्य हिस्सा. ज़्यादा
जानकारी के लिए, फ़्लो वैरिएबल का रेफ़रंस देखें. JavaScript नीति या AssignmentMessage नीति का इस्तेमाल करके,
कस्टम वैरिएबल भी सेट किए जा सकते हैं. |
लागू नहीं | ज़रूरी नहीं |
<UseEffectiveCount>
का असर, इसकी वैल्यू पर निर्भर करता है:
true
: किसी एमपी की बढ़ोतरी की दर की सीमा,<Rate>
को उसी पॉड में एमपी की मौजूदा संख्या से भाग देने पर मिलती है. कुल सीमा,<Rate>
की वैल्यू है. जब एमपी को डाइनैमिक तौर पर जोड़ा (या हटाया जाता है), तो उनकी खास बढ़ोतरी की दर बढ़ या घट जाएगी. हालांकि, कुल सीमा में कोई बदलाव नहीं होगा.false
(अगर वीडियो में कोई बदलाव नहीं किया गया है, तो यह डिफ़ॉल्ट वैल्यू होती है): हर एमपी की बढ़ोतरी की दर की सीमा बस उसकी<Rate>
की वैल्यू है. कुल सीमा, सभी एमपी की दरों का कुल योग होती है. जब एमपी को जोड़ा या हटाया जाता है, तो उनकी अलग-अलग बढ़ोतरी की दर की सीमाएं पहले जैसी ही रहेंगी. हालांकि, कुल सीमा बढ़ी या घट जाएगी.
इस टेबल में दिखाया गया है कि हर एमपी के लिए तय की गई, दर की तय सीमा पर <UseEffectiveCount>
का क्या असर होता है:
<UseEffectiveCount> की वैल्यू |
||||||
---|---|---|---|---|---|---|
false |
false |
false |
true |
true |
true |
|
# एमपी | 8 | 4 | 2 | 8 | 4 | 2 |
<Rate> की वैल्यू |
10 | 10 | 10 | 40 | 40 | 40 |
हर एमपी में लागू होने की दर | 10 | 10 | 10 | 5 | 10 | 20 |
कुल सीमा | 80 | 40 | 20 | 40* | 40* | 40* |
* <Rate> के बराबर. |
इस उदाहरण में, ध्यान दें कि जब एमपी की संख्या 4 से घटकर 2 हो जाती है और
<UseEffectiveCount>
false
हो जाती है, तो हर एमपी के हिसाब से लागू होने की दर
पहले जैसी ही रहती है (10 पर). हालांकि, जब <UseEffectiveCount>
, true
हो जाता है, तो हर एमपी के हिसाब से सदस्यता की दर
10 से घटकर 20 हो जाती है. ऐसा तब होता है, जब एमपी की संख्या 4 से घटकर 2 हो जाती है.
फ़्लो वैरिएबल
स्पाइक अरेस्ट नीति के लागू होने पर, यह फ़्लो वैरिएबल अपने-आप भर जाता है:
वैरिएबल | टाइप | अनुमति | ब्यौरा |
---|---|---|---|
ratelimit.policy_name.failed |
बूलियन | रीड-ओनली | इससे पता चलता है कि नीति लागू हुई या नहीं (true या
false ). |
ज़्यादा जानकारी के लिए, फ़्लो वैरिएबल का रेफ़रंस देखें.
गड़बड़ी का रेफ़रंस
इस सेक्शन में गड़बड़ी के कोड और दिखाए गए गड़बड़ी के मैसेज के बारे में बताया गया है. साथ ही, इस नीति के ट्रिगर होने पर Edge की मदद से सेट किए गए गड़बड़ी वाले वैरिएबल के बारे में बताया गया है. यह जानकारी जानना ज़रूरी है कि क्या गड़बड़ियों को ठीक करने के लिए, गड़बड़ी से जुड़े नियम बनाए जा रहे हैं. ज़्यादा जानने के लिए, नीति से जुड़ी गड़बड़ियों के बारे में आपको क्या जानने की ज़रूरत है और गड़बड़ियां ठीक करना देखें.
रनटाइम से जुड़ी गड़बड़ियां
नीति के लागू होने पर ये गड़बड़ियां हो सकती हैं.
गड़बड़ी का कोड | एचटीटीपी कोड स्थिति | वजह | समाधान |
---|---|---|---|
policies.ratelimit.FailedToResolveSpikeArrestRate |
500 |
यह गड़बड़ी तब होती है, जब <Rate> एलिमेंट के अंदर दर की सेटिंग वाले वैरिएबल के रेफ़रंस को स्पाइक अरेस्ट नीति के तहत तय की गई वैल्यू के तौर पर हल नहीं किया जा सकता. यह एलिमेंट ज़रूरी है. इसका इस्तेमाल, intpm या intps के रूप में, अचानक होने वाली गिरफ़्तारी की दर को बताने के लिए किया जाता है. |
build |
policies.ratelimit.InvalidMessageWeight |
500 |
यह गड़बड़ी तब होती है, जब फ़्लो वैरिएबल के ज़रिए <MessageWeight> एलिमेंट के लिए
तय की गई वैल्यू, अमान्य हो (यह एक पूर्णांक नहीं है). |
build |
policies.ratelimit.SpikeArrestViolation |
429 |
दर सीमा पार हो गई थी. |
डिप्लॉयमेंट से जुड़ी गड़बड़ियां
ये गड़बड़ियां तब हो सकती हैं, जब इस नीति वाले किसी प्रॉक्सी को डिप्लॉय किया जाता है.
गड़बड़ी का नाम | वजह | समाधान |
---|---|---|
InvalidAllowedRate |
अगर स्पाइक अरेस्ट नीति के <Rate> एलिमेंट में बताई गई बढ़ोतरी की दर, पूर्णांक नहीं है या रेट में सफ़िक्स के तौर पर ps या pm नहीं है, तो एपीआई प्रॉक्सी को डिप्लॉय नहीं किया जा सकता. |
build |
गड़बड़ी वाले वैरिएबल
रनटाइम में कोई गड़बड़ी होने पर ये वैरिएबल सेट किए जाते हैं. ज़्यादा जानकारी के लिए, नीति से जुड़ी गड़बड़ियों के बारे में आपके लिए ज़रूरी जानकारी देखें.
वैरिएबल | जगह | उदाहरण |
---|---|---|
fault.name="fault_name" |
fault_name, गड़बड़ी का नाम है, जैसा कि ऊपर दी गई रनटाइम की गड़बड़ियां टेबल में बताया गया है. गड़बड़ी का नाम, गड़बड़ी के कोड का आखिरी हिस्सा होता है. | fault.name Matches "SpikeArrestViolation" |
ratelimit.policy_name.failed |
policy_name, उस नीति का उपयोगकर्ता तय किया गया नाम है जिसकी वजह से गड़बड़ी हुई है. | ratelimit.SA-SpikeArrestPolicy.failed = true |
गड़बड़ी के जवाब का उदाहरण
गड़बड़ी ठीक करने का एक उदाहरण नीचे दिया गया है:
{ "fault":{ "detail":{ "errorcode":"policies.ratelimit.SpikeArrestViolation" }, "faultstring":"Spike arrest violation. Allowed rate : 10ps" } }
गड़बड़ी के नियम का उदाहरण
SpikeArrestViolation
गड़बड़ी को ठीक करने के लिए, गड़बड़ी से जुड़े नियम का एक उदाहरण नीचे दिखाया गया है:
<FaultRules> <FaultRule name="Spike Arrest Errors"> <Step> <Name>JavaScript-1</Name> <Condition>(fault.name Matches "SpikeArrestViolation") </Condition> </Step> <Condition>ratelimit.Spike-Arrest-1.failed=true</Condition> </FaultRule> </FaultRules>
कोटा या स्पाइक अरेस्ट नीति के तहत सेट की गई दर की सीमा को पार करने के लिए, मौजूदा एचटीटीपी स्टेटस कोड 429
है. इसमें बहुत ज़्यादा अनुरोध किए जा सकते हैं. एचटीटीपी स्टेटस कोड को 500
(इंटरनल सर्वर गड़बड़ी) में बदलने के लिए,
संगठन की प्रॉपर्टी अपडेट करें एपीआई का इस्तेमाल करके,
features.isHTTPStatusTooManyRequestEnabled
प्रॉपर्टी को false
पर सेट करें.
उदाहरण के लिए:
curl -u email:password -X POST -H "Content-type:application/xml" http://api.enterprise.apigee.com/v1/organizations/myorg -d \ "<Organization type="trial" name="MyOrganization"> <Properties> <Property name="features.isHTTPStatusTooManyRequestEnabled">true</Property> . . . </Properties> </Organization>"
स्कीमा
हर तरह की नीति को एक्सएमएल स्कीमा (.xsd
) से तय किया जाता है. रेफ़रंस के लिए, नीति के स्कीमा GitHub पर उपलब्ध हैं.
मिलते-जुलते विषय
- कोटा नीति: अलग-अलग क्लाइंट पर ट्रैफ़िक को सीमित करने के लिए कोटा नीति
- दर सीमित करने से जुड़ी खास जानकारी के लिए, दर की सीमा तय करना
- कोटा और SpikeArrest नीतियों की तुलना करना
- एपीआई प्रॉक्सी के काम करने वाले सैंपल