SpikeArest की नीति

Apigee Edge का दस्तावेज़ देखा जा रहा है.
Apigee X के दस्तावेज़ पर जाएं.
जानकारी

Edge के यूज़र इंटरफ़ेस (यूआई) में स्पाइक ऐरेस्ट का आइकॉन

स्पाइक अरेस्ट की नीति, <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>

डिफ़ॉल्ट नीति

यहां दिए गए उदाहरण में, Edge यूज़र इंटरफ़ेस (यूआई) में अपने फ़्लो में ट्रैफ़िक में अचानक बढ़ोतरी को रोकने की नीति जोड़ने पर, डिफ़ॉल्ट सेटिंग दिख रही हैं:

<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 लागू नहीं ज़रूरी

नीति का अंदरूनी नाम. name एट्रिब्यूट की वैल्यू में अक्षर, संख्याएं, स्पेस, हाइफ़न, अंडरस्कोर, और फ़ुल स्टॉप का इस्तेमाल किया जा सकता है. इस वैल्यू में 255 से ज़्यादा वर्ण नहीं हो सकते.

इसके अलावा, मैनेजमेंट एलिमेंट के यूज़र इंटरफ़ेस (यूआई) प्रॉक्सी एडिटर में, नीति एलिमेंट को किसी अलग नाम से इस्तेमाल करने के लिए, <DisplayName> एलिमेंट का इस्तेमाल किया जा सकता है.

continueOnError गलत ज़रूरी नहीं नीति के काम न करने पर गड़बड़ी दिखाने के लिए, "गलत" पर सेट करें. ज़्यादातर नीतियों के लिए इस तरीके का इस्तेमाल किया जाना चाहिए. नीति लागू न होने के बाद भी फ़्लो चलाने के लिए, "सही" पर सेट करें.
enabled सही ज़रूरी नहीं नीति लागू करने के लिए, "सही" पर सेट करें. नीति को "बंद" करने के लिए "गलत" पर सेट करें. अगर नीति किसी फ़्लो से जुड़ी हुई हो, तो भी उसे लागू नहीं किया जाएगा.
async   गलत बहिष्कृत इस एट्रिब्यूट के इस्तेमाल पर रोक लगा दी गई है.

उदाहरण

यहां दिए गए उदाहरणों में, स्पाइक अरेस्ट की नीति का इस्तेमाल करने के कुछ तरीके बताए गए हैं:

उदाहरण 1

यहां दिए गए उदाहरण में, दर को हर सेकंड पांच पर सेट किया गया है:

<SpikeArrest name="Spike-Arrest-1">
  <Rate>5ps</Rate>
</SpikeArrest>

इस नीति के तहत, हर 200 मिलीसेकंड (1000/5) में एक अनुरोध करने की अनुमति है.

उदाहरण 2

इस उदाहरण में, दर को हर मिनट 300 पर सेट किया गया है:

<SpikeArrest async="false" continueOnError="false" enabled="true" name="SpikeArreast">
  <DisplayName>SpikeArreast</DisplayName>
  <Rate>300pm</Rate>
</SpikeArrest>

असरदार दर 300pm है. इसका मतलब है कि हर 200 मिलीसेकंड में बकेट में एक नया टोकन जोड़ा जाता है. बकेट का साइज़ हमेशा messagesPerPeriod के 10% के तौर पर कॉन्फ़िगर किया जाता है. इसलिए, messagesPerPeriod के 300 होने पर, बकेट का साइज़ 30 टोकन होगा.

उदाहरण 3

नीचे दिए गए उदाहरण में, हर मिनट 12 अनुरोध करने की सीमा तय की गई है. इसका मतलब है कि हर पांच सेकंड या 60/12 में एक अनुरोध किया जा सकता है:

<SpikeArrest name="Spike-Arrest-1">
  <Rate>12pm</Rate>
  <Identifier ref="client_id" />
  <MessageWeight ref="request.header.weight" />
</SpikeArrest>

इसके अलावा, <MessageWeight> एलिमेंट में कस्टम वैल्यू (weight हेडर) को स्वीकार किया जाता है. इससे, खास ऐप्लिकेशन या क्लाइंट के लिए मैसेज की अहमियत में बदलाव होता है. इससे, <Identifier> एलिमेंट की मदद से पहचान की गई इकाइयों के लिए, ट्रॉथलिंग पर ज़्यादा कंट्रोल मिलता है.

उदाहरण 4

इस उदाहरण में, Spike Arrest को 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 नीति या AssignMessage नीति का इस्तेमाल करके भी कस्टम वैरिएबल सेट किए जा सकते हैं. लागू नहीं ज़रूरी है

इस एलिमेंट के बारे में, Apigee कम्यूनिटी की इस पोस्ट में भी बताया गया है: http://community.apigee.com/questions/2807/how-does-the-edge-quota-policy-work-when-no-identi.html.

<MessageWeight>

इससे हर मैसेज के लिए तय किए गए वज़न की जानकारी मिलती है. मैसेज की अहमियत से, स्पाइक की दर का हिसाब लगाने पर, किसी एक अनुरोध के असर में बदलाव होता है. मैसेज का वज़न, कोई भी फ़्लो वैरिएबल हो सकता है. जैसे, एचटीटीपी हेडर, क्वेरी पैरामीटर, फ़ॉर्म पैरामीटर या मैसेज के मुख्य हिस्से का कॉन्टेंट. JavaScript नीति या AssignMessage नीति का इस्तेमाल करके, कस्टम वैरिएबल का भी इस्तेमाल किया जा सकता है.

किसी खास क्लाइंट या ऐप्लिकेशन के अनुरोधों को और कम करने के लिए, <Identifier> के साथ इस्तेमाल करें.

उदाहरण के लिए, अगर स्पाइक अरेस्ट <Rate> 10pm है और कोई ऐप्लिकेशन 2 के वेट के साथ अनुरोध सबमिट करता है, तो उस क्लाइंट से हर मिनट में सिर्फ़ पांच मैसेज भेजने की अनुमति है, क्योंकि हर अनुरोध की गिनती दो के तौर पर की जाती है.

डिफ़ॉल्ट वैल्यू लागू नहीं
क्या यह ज़रूरी है? वैकल्पिक
समस्या पूर्णांक
पैरंट एलिमेंट <SpikeArrest>
चाइल्ड एलिमेंट कोई नहीं

सिंटैक्स

<SpikeArrest
  continueOnError="[false|true]"
  enabled="[true|false]"
  name="policy_name"
>
  <MessageWeight ref="flow_variable"/>
</SpikeArrest>

उदाहरण 1

नीचे दिए गए उदाहरण में, हर मिनट 12 अनुरोध करने की सीमा तय की गई है. इसका मतलब है कि हर पांच सेकंड या 60/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 नीति या AssignMessage नीति का इस्तेमाल करके भी कस्टम वैरिएबल सेट किए जा सकते हैं. ज़रूरी है लागू नहीं

<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 मिलीसेकंड (1000/5) में एक अनुरोध करने की अनुमति है.

उदाहरण 2

इस उदाहरण में, दर को हर मिनट 12 अनुरोधों पर सेट किया गया है:

<SpikeArrest async="false" continueOnError="false" enabled="true" name="SpikeArreast">
  <DisplayName>SpikeArreast</DisplayName>
  <Rate>300pm</Rate>
</SpikeArrest>

इस उदाहरण में दी गई नीति के हिसाब से, हर पांच सेकंड (60/12) में एक अनुरोध किया जा सकता है.

नीचे दी गई टेबल में <Rate> के एट्रिब्यूट के बारे में बताया गया है:

एट्रिब्यूट ब्यौरा मौजूदगी डिफ़ॉल्ट
ref उस फ़्लो वैरिएबल की पहचान करता है जो दर की जानकारी देता है. यह कोई भी फ़्लो वैरिएबल हो सकता है, जैसे कि एचटीटीपी क्वेरी पैरामीटर, हेडर या मैसेज का मुख्य हिस्सा. इसके अलावा, यह वैल्यू भी हो सकती है, जैसे कि केवीएम. ज़्यादा जानकारी के लिए, फ़्लो वैरिएबल का रेफ़रंस देखें.

JavaScript नीति या AssignMessage नीति का इस्तेमाल करके, कस्टम वैरिएबल का भी इस्तेमाल किया जा सकता है.

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

उदाहरण के लिए:

<Rate ref="request.header.custom_rate">1pm</Rate>

इस उदाहरण में, अगर क्लाइंट "custom_rate" हेडर नहीं भेजता है, तो सभी क्लाइंट के लिए एपीआई प्रॉक्सी की दर, हर मिनट में एक अनुरोध होगी. अगर क्लाइंट "custom_rate" हेडर पास करता है, तो प्रॉक्सी पर मौजूद सभी क्लाइंट के लिए, अनुरोध की दर की सीमा हर सेकंड 10 अनुरोध हो जाती है. ऐसा तब तक होता है, जब तक "custom_rate" हेडर के बिना कोई अनुरोध नहीं भेजा जाता.

अलग-अलग तरह के क्लाइंट के लिए कस्टम किराये लागू करने के लिए, अनुरोधों को ग्रुप करने के लिए <Identifier> का इस्तेमाल किया जा सकता है.

अगर आपने ref के लिए कोई वैल्यू दी है, लेकिन <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 नीति या AssignMessage नीति का इस्तेमाल करके भी कस्टम वैरिएबल सेट किए जा सकते हैं. लागू नहीं वैकल्पिक

<UseEffectiveCount> का असर, इसकी वैल्यू पर निर्भर करता है:

  • true: किसी पॉड में मौजूद एमपी की संख्या को, <Rate> से भाग देने पर, एमपी के स्पाइक रेट की सीमा मिलती है. कुल सीमा, <Rate> की वैल्यू है. जब एमपी डाइनैमिक तौर पर जोड़े (या हटाए) जाते हैं, तो उनके लिए स्पाइक रेट की अलग-अलग सीमाएं बढ़ जाएंगी (या कम हो जाएंगी). हालांकि, कुल सीमा में कोई बदलाव नहीं होगा.
  • false (अगर यह वैल्यू नहीं दी जाती है, तो यह डिफ़ॉल्ट वैल्यू होती है): हर एमपी के स्पाइक रेट की सीमा, बस उसकी <Rate> वैल्यू होती है. कुल सीमा, सभी एमपी की दरों का योग होती है. एमपी जोड़ने (या हटाने) पर, उनके स्पाइक रेट की अलग-अलग सीमाएं पहले जैसी ही रहेंगी. हालांकि, कुल सीमा बढ़ जाएगी (या घट जाएगी).

नीचे दी गई टेबल में, हर एमपी की दर की सीमा पर <UseEffectiveCount> के असर को दिखाया गया है:

<UseEffectiveCount> की वैल्यू
false false false true true true
# of MPs 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 है, तो हर एमपी के लिए असरदार दर, एमपी की संख्या 4 से घटकर 2 होने पर, 10 से 20 हो जाती है.

फ़्लो वैरिएबल

जब स्पाइक अरेस्ट की नीति लागू होती है, तो नीचे दिया गया फ़्लो वैरिएबल पॉप्युलेट होता है:

वैरिएबल टाइप अनुमति ब्यौरा
ratelimit.policy_name.failed बूलियन रीड-ओनली इससे पता चलता है कि नीति लागू हुई या नहीं (true या false).

ज़्यादा जानकारी के लिए, फ़्लो वैरिएबल का रेफ़रंस देखें.

गड़बड़ी का रेफ़रंस

इस सेक्शन में, गड़बड़ी के कोड और गड़बड़ी के मैसेज के साथ-साथ गड़बड़ी के वैरिएबल के बारे में बताया गया है ये सेटिंग, Edge की मदद से सेट की जाती हैं. ऐसा तब होता है, जब इस नीति की वजह से कोई गड़बड़ी होती है. यह जानकारी जानना ज़रूरी है कि क्या आप गड़बड़ियों को ठीक करता है. इस बारे में ज़्यादा जानने के लिए, यह देखें आपके लिए काम की जानकारी नीति से जुड़ी गड़बड़ियों और हैंडलिंग के बारे में जानकारी गलतियां.

रनटाइम की गड़बड़ियां

नीति के लागू होने पर ये गड़बड़ियां हो सकती हैं.

गड़बड़ी कोड एचटीटीपी कोड स्थिति वजह ठीक करें
policies.ratelimit.FailedToResolveSpikeArrestRate 500 यह गड़बड़ी तब होती है, जब रेट सेटिंग वाले वैरिएबल का रेफ़रंस होता है <Rate> एलिमेंट के अंदर, Spike Arrest में मौजूद वैल्यू नहीं हटाई जा सकती की नीति देखें. यह एलिमेंट ज़रूरी है. इसका इस्तेमाल, गिरफ़्तारी की दर के बारे में बताने के लिए किया जाता है intpm या intps का फ़ॉर्मैट.
policies.ratelimit.InvalidMessageWeight 500 यह गड़बड़ी तब होती है, जब <MessageWeight> एलिमेंट के लिए वैल्यू इसके ज़रिए तय की जाती है फ़्लो वैरिएबल अमान्य है (गैर-पूर्णांक मान).
policies.ratelimit.SpikeArrestViolation 429

दर सीमा पार हो गई थी.

डिप्लॉयमेंट से जुड़ी गड़बड़ियां

ये गड़बड़ियां तब हो सकती हैं, जब इस नीति वाली प्रॉक्सी को डिप्लॉय किया जाता है.

गड़बड़ी का नाम वजह ठीक करें
InvalidAllowedRate अगर स्पाइक अरेस्ट के <Rate> एलिमेंट में, गिरफ़्तारी की ज़्यादा दर बताई गई है, तो नीति कोई पूर्णांक नहीं है या अगर दर में सफ़िक्स के तौर पर ps या pm नहीं है, तो तब एपीआई प्रॉक्सी को डिप्लॉय नहीं किया जा सकता.

गड़बड़ी के वैरिएबल

रनटाइम की गड़बड़ी होने पर ये वैरिएबल सेट किए जाते हैं. ज़्यादा जानकारी के लिए, आपके लिए ज़रूरी जानकारी देखें नीति से जुड़ी गड़बड़ियों के बारे में जानकारी.

वैरिएबल कहां उदाहरण
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 पर सेट करें. इसके लिए, Update organization properties API का इस्तेमाल करें.

उदाहरण के लिए:

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 पर नीति स्कीमा उपलब्ध हैं.

मिलते-जुलते विषय