خط‌مشی SpikeArrest

درحال مشاهده اسناد Apigee Edge هستید.
به اسناد Apigee X بروید.
اطلاعات

نماد «مهار جهش» از «میانای کاربری Edge»

خط‌مشی «مهار جهش» با عنصر <Rate> دربرابر جهش‌های ترافیک محافظت می‌کند. این عنصر تعداد درخواست‌های پردازش‌شده توسط پراکسی API و ارسال‌شده به زیرینه را محدود می‌کند و از تأخیر در عملکرد و زمان خرابی محافظت می‌کند.

‫<SpikeArrest> عنصر

خط‌مشی «مهار جهش» را تعریف می‌کند.

مقدار پیش‌فرض برگه خط‌مشی پیش‌فرض در زیر را ببینید
الزامی است؟ اختیاری
تایپ کردن شیء Complex
عنصر والد نامربوط
عناصر فرزند <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>

This element has the following attributes that are common to all policies:

Attribute Default Required? Description
name N/A Required

The internal name of the policy. The value of the name attribute can contain letters, numbers, spaces, hyphens, underscores, and periods. This value cannot exceed 255 characters.

Optionally, use the <DisplayName> element to label the policy in the management UI proxy editor with a different, natural-language name.

continueOnError false Optional Set to "false" to return an error when a policy fails. This is expected behavior for most policies. Set to "true" to have flow execution continue even after a policy fails.
enabled true Optional Set to "true" to enforce the policy. Set to "false" to "turn off" the policy. The policy will not be enforced even if it remains attached to a flow.
async   false Deprecated This attribute is deprecated.

مثال‌ها

مثال‌های زیر برخی‌از روش‌هایی را نشان می‌دهد که می‌توانید از خط‌مشی «مهار جهش» استفاده کنید:

مثال ۱

مثال زیر نرخ را روی پنج در ثانیه تنظیم می‌کند:

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

این خط‌مشی نرخ را به یک درخواست مجاز در هر ۲۰۰ میلی‌ثانیه (۱۰۰۰/۵) هموار می‌کند.

مثال ۲

مثال زیر نرخ را روی ۳۰۰ در دقیقه تنظیم می‌کند:

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

نرخ مؤثر ۳۰۰ در دقیقه است، یعنی هر ۲۰۰ میلی‌ثانیه یک نشان جدید به ظرف اضافه می‌شود. اندازه دسته‌بندی همیشه به‌گونه‌ای پیکربندی می‌شود که ۱۰٪ از messagesPerPeriod باشد. بنابراین، با messagesPerPeriod برابر با ۳۰۰، اندازه سطل ۳۰ واحد است.

مثال ۳

مثال زیر درخواست‌ها را به ۱۲ درخواست در دقیقه محدود می‌کند (هر پنج ثانیه یک درخواست مجاز است، یا ۶۰/۱۲):

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

علاوه‌براین، عنصر <MessageWeight> مقدار سفارشی (سرایند weight) را می‌پذیرد که وزن پیام را برای برنامه‌ها یا مشتریان خاص تنظیم می‌کند. این کنترل بیشتری بر محدود کردن نهادهایی که با عنصر <Identifier> شناسایی می‌شوند ارائه می‌دهد.

مثال ۴

مثال زیر به «مهار جهش» دستور می‌دهد که مقدار زمان اجرایی را که ازطریق درخواست تنظیم شده است جستجو کند و به‌عنوان متغیر جاری 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>

Use in addition to the name attribute to label the policy in the management UI proxy editor with a different, more natural-sounding name.

The <DisplayName> element is common to all policies.

Default Value n/a
Required? Optional. If you omit <DisplayName>, the value of the policy's name attribute is used
Type String
Parent Element <PolicyElement>
Child Elements None

The <DisplayName> element uses the following syntax:

Syntax

<PolicyElement>
  <DisplayName>policy_display_name</DisplayName>
  ...
</PolicyElement>

Example

<PolicyElement>
  <DisplayName>My Validation Policy</DisplayName>
</PolicyElement>

The <DisplayName> element has no attributes or child elements.

<Identifier>

به شما امکان می‌دهد نحوه گروه‌بندی درخواست‌ها را انتخاب کنید تا خط‌مشی «مهار جهش» براساس کارخواه اعمال شود. برای مثال، می‌توانید درخواست‌ها را براساس شناسه توسعه‌دهنده گروه‌بندی کنید، در این صورت درخواست‌های هر توسعه‌دهنده در نرخ «مهار جهش» خودشان محاسبه می‌شود و نه همه درخواست‌های پراکسی.

برای کنترل دقیق‌تر محدودسازی درخواست، از آن همراه با عنصر <MessageWeight> استفاده کنید.

اگر عنصر <Identifier> را خالی بگذارید، یک حد نرخ برای همه درخواست‌ها در آن پراکسی API اعمال می‌شود.

مقدار پیش‌فرض نامربوط
الزامی است؟ اختیاری
تایپ کردن رشته
عنصر والد <SpikeArrest>
عناصر فرزند خالی

نحو

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

مثال ۱

مثال زیر خط‌مشی «مهار جهش» را برای هر شناسه توسعه‌دهنده اعمال می‌کند:

<SpikeArrest name="Spike-Arrest-1">
  <Identifier ref="developer.id"/>
  <Rate>42pm</Rate/>
</SpikeArrest>

جدول زیر مشخصه‌های <Identifier> را شرح می‌دهد:

مشخصه شرح پیش‌فرض حضور
ref متغیری را که براساس آن «مهار جهش» درخواست‌های ورودی را گروه‌بندی می‌کند شناسایی می‌کند. می‌توانید از هر متغیر جاری برای نشان دادن مشتری منحصربه‌فرد استفاده کنید، مثل متغیرهای دردسترس در خط‌مشی VerifyAPIKey. همچنین می‌توانید بااستفاده از خط‌مشی جاوا اسکریپت یا خط‌مشی AssignMessage متغیرهای سفارشی تنظیم کنید. نامربوط الزامی

این عنصر در پست «انجمن Apigee» زیر نیز مورد بحث قرار گرفته است: شناسه سهمیه در خط‌مشی‌های مختلف.

<MessageWeight>

وزن تعریف‌شده برای هر پیام را مشخص می‌کند. وزن پیام تأثیر یک درخواست واحد بر محاسبه نرخ «مهار جهش» را تغییر می‌دهد. وزن پیام می‌تواند هر متغیر جریانی باشد، مثل سرایند HTTP، پارامتر پُرسمان، پارامتر فرم، یا محتوای بدنه پیام. همچنین می‌توانید بااستفاده از خط‌مشی جاوا اسکریپت یا خط‌مشی AssignMessage از متغیرهای سفارشی استفاده کنید.

برای محدود کردن بیشتر درخواست‌ها براساس کارخواه‌ها یا برنامه‌های خاص، همراه با <Identifier> استفاده کنید.

برای مثال، اگر «مهار کردن جهش» <Rate> روی 10pm تنظیم شده باشد و برنامه‌ای درخواست‌هایی با وزن 2 ارسال کند، در این‌صورت فقط پنج پیام در دقیقه از آن کارخواه مجاز است زیرا هر درخواست به‌عنوان ۲ محاسبه می‌شود.

مقدار پیش‌فرض نامربوط
الزامی است؟ اختیاری
تایپ کردن عدد صحیح
عنصر والد <SpikeArrest>
عناصر فرزند خالی

نحو

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

مثال ۱

مثال زیر درخواست‌ها را به ۱۲ درخواست در دقیقه محدود می‌کند (هر پنج ثانیه یک درخواست مجاز است، یا ۶۰/۱۲):

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

در این مثال، <MessageWeight> مقدار سفارشی (سرصفحه weight در درخواست) را می‌پذیرد که وزن پیام را برای مشتریان خاص تنظیم می‌کند. این کنترل بیشتری بر محدود کردن نهادهایی که با عنصر <Identifier> شناسایی می‌شوند ارائه می‌دهد.

جدول زیر مشخصه‌های <MessageWeight> را شرح می‌دهد:

مشخصه شرح حضور پیش‌فرض
ref متغیر جریانی را که حاوی وزن پیام برای مشتری خاص است شناسایی می‌کند. این می‌تواند هر متغیر جاری‌سازی باشد، مثل پارامتر پُرسمان HTTP، سرایند، یا محتوای بدنه پیام. برای اطلاعات بیشتر، به مرجع متغیرهای جریان مراجعه کنید. همچنین می‌توانید متغیرهای سفارشی را بااستفاده از خط‌مشی جاوا اسکریپت یا خط‌مشی «تخصیص پیام» تنظیم کنید. الزامی موجود نیست

<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 باید عدد صحیح مثبت غیرصفر باشد.

مثال ۱

مثال زیر نرخ را روی پنج درخواست در ثانیه تنظیم می‌کند:

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

این خط‌مشی نرخ را به یک درخواست مجاز در هر ۲۰۰ میلی‌ثانیه (۱۰۰۰/۵) هموار می‌کند.

مثال ۲

مثال زیر نرخ را روی ۱۲ درخواست در دقیقه تنظیم می‌کند:

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

این خط‌مشی نمونه نرخ را به یک درخواست مجاز در هر پنج ثانیه (۶۰/۱۲) هموار می‌کند.

جدول زیر مشخصه‌های <Rate> را شرح می‌دهد:

مشخصه شرح حضور پیش‌فرض
ref متغیر جریانی را که نرخ را مشخص می‌کند شناسایی می‌کند. این می‌تواند هر متغیر جریانی باشد، مثل پارامتر پُرسمان HTTP، سرصفحه، یا محتوای بدنه پیام، یا مقداری مثل KVM. برای اطلاعات بیشتر، به مرجع متغیرهای جریان مراجعه کنید.

همچنین می‌توانید بااستفاده از خط‌مشی جاوا اسکریپت یا خط‌مشی «تخصیص پیام» از متغیرهای سفارشی استفاده کنید.

اگر هم ref و بدنه این عنصر را تعریف کنید، وقتی متغیر جاری در درخواست تنظیم می‌شود، مقدار ref اعمال می‌شود و اولویت دارد. (وقتی متغیر شناسایی‌شده در ref در درخواست تنظیم نشده باشد، عکس این موضوع صادق است.)

برای مثال:

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

در این مثال، اگر کارخواه سرایند «custom_rate» را ارسال نکند، نرخ پراکسی API برای همه کارخواهان ۱ درخواست در دقیقه است. اگر کارخواه سرایند «custom_rate» را ارسال کند، حد نرخ برای همه کارخواهان در پراکسی به ۱۰ درخواست در ثانیه تبدیل می‌شود — تا زمانی که درخواستی بدون سرایند «custom_rate» ارسال شود.

می‌توانید از <Identifier> برای گروه‌بندی درخواست‌ها برای اعمال نرخ‌های سفارشی برای انواع مختلف مشتری استفاده کنید.

اگر برای ref مقداری مشخص کنید اما نرخ را در بدنه عنصر <Rate> تنظیم نکنید و کارخواه مقداری را ارسال نکند، خطایی در خط‌مشی «مهار سنبله» ایجاد می‌شود.

اختیاری نامربوط
جدول زیر ویژگی‌های Rate را که رفتار محدودسازی ترافیک را تعریف می‌کند شرح می‌دهد:
مشخصه شرح
messagesPerPeriod تعداد پیام‌های مجاز در یک دوره تعریف‌شده را مشخص می‌کند. برای مثال، اگر خط‌مشی برای «۱۰ps» (۱۰ در ثانیه) پیکربندی شده باشد، مقدار messagesPerPeriod ۱۰ خواهد بود.
periodInMicroseconds بازه زمانی را به میکروثانیه تعریف می‌کند که درطول آن messagesPerPeriod محاسبه می‌شود. برای پیکربندی «۱۰ps»، این مقدار ۱٬۰۰۰٬۰۰۰ خواهد بود که معادل یک ثانیه است.
maxBurstMessageCount نشان‌دهنده حداکثر تعداد درخواست‌هایی است که می‌توانند فوراً یا در یک بازه کوتاه در ابتدای یک بازه جدید مجاز شوند.

<UseEffectiveCount>

وقتی از گروه‌های مقیاس‌بندی خودکار استفاده می‌کنید، تعداد «مهار سنبله» را در «پردازنده‌های پیام» (MPs) توزیع می‌کند.

نحو

<SpikeArrest
  continueOnError="[false|true]"
  enabled="[true|false]"
  name="policy_name"
>
  <UseEffectiveCount>[false|true]</UseEffectiveCount>
</SpikeArrest>

مثال ۱

مثال زیر <UseEffectiveCount> را روی درست تنظیم می‌کند:

<SpikeArrest name='Spike-Arrest-1'>
  <Rate>40ps</Rate>
  <UseEffectiveCount>true</UseEffectiveCount>
</SpikeArrest>

عنصر <UseEffectiveCount> اختیاری است. وقتی عنصر از خط‌مشی «مهار جهش» شما حذف می‌شود، مقدار پیش‌فرض false است.

مقدار پیش‌فرض نادرست
الزامی است؟ اختیاری
تایپ کردن بولی
عنصر والد <SpikeArrest>
عناصر فرزند خالی

جدول زیر مشخصه‌های عنصر <UseEffectiveCount> را شرح می‌دهد:

مشخصه شرح پیش‌فرض حضور
ref متغیری را که حاوی مقدار <UseEffectiveCount> است شناسایی می‌کند. این می‌تواند هر متغیر جریانی باشد، مثل پارامتر پُرسمان HTTP، سرایند، یا محتوای بدنه پیام. برای اطلاعات بیشتر، مرجع متغیرهای جریان را ببینید. همچنین می‌توانید متغیرهای سفارشی را بااستفاده از خط‌مشی جاوا اسکریپت یا خط‌مشی «تخصیص پیام» تنظیم کنید. نامربوط اختیاری

تأثیر <UseEffectiveCount> به مقدار آن بستگی دارد:

  • true: حد نرخ جهش MP عبارت است از <Rate> تقسیم بر تعداد فعلی MP در همان گروه. حد تجمیعی مقدار <Rate> است. وقتی «اعضای گروه» به‌صورت پویا اضافه (یا حذف) می‌شوند، محدودیت‌های نرخ جهش فردی آن‌ها افزایش (یا کاهش) می‌یابد، اما محدودیت کلی ثابت می‌ماند.
  • ‫false: حد نرخ جهش هر MP به‌سادگی مقدار <Rate> آن است. حد مجموع عبارت است از مجموع نرخ‌های همه نمایندگان مجلس. وقتی «نقاط پایانی پیام» اضافه (یا برداشته) می‌شوند، حدود نرخ جهشی فردی آن‌ها بدون تغییر می‌ماند، اما حد تجمیعی افزایش (یا کاهش) می‌یابد.

خط‌مشی SpikeArrest از الگوریتم «توکن باکت» استفاده می‌کند که با تقسیم کردن حد نرخ مشخص‌شده به بازه‌های زمانی کوچک‌تر، جهش‌های ترافیک را هموار می‌کند. یکی از معایب این رویکرد این است که ممکن است چندین درخواست قانونی که در یک بازه زمانی کوتاه ارسال می‌شوند، رد شوند.

برای مثال، فرض کنید نرخ ۳۰ درخواست در دقیقه را وارد می‌کنید. در آزمایش، ممکن است فکر کنید می‌توانید ۳۰ درخواست در ۱ ثانیه ارسال کنید، به‌شرطی که در یک دقیقه ارسال شوند. اما خط‌مشی این تنظیم را به این شکل اجرا نمی‌کند. اگر به آن فکر کنید، ۳۰ درخواست در یک دوره ۱ ثانیه‌ای می‌تواند در برخی محیط‌ها به‌عنوان یک جهش کوچک درنظر گرفته شود.

  • نرخ‌های در دقیقه به درخواست‌های کامل مجاز در فواصل ثانیه تبدیل می‌شوند.

    برای مثال، ۳۰ درخواست در دقیقه به این صورت هموار می‌شود:
    ۶۰ ثانیه (۱ دقیقه) / ۳۰ درخواست در دقیقه = فواصل ۲ ثانیه‌ای، یا ۱ درخواست مجاز در هر ۲ ثانیه. درخواست دوم در عرض ۲ ثانیه انجام نخواهد شد. همچنین، درخواست سی‌ویکم در یک دقیقه ناموفق خواهد بود.

  • نرخ‌های در ثانیه به درخواست‌های کامل مجاز در فواصل زمانی میلی‌ثانیه تبدیل می‌شوند.

    برای مثال، ۱۰ps به‌این‌صورت هموار می‌شود:
    ۱۰۰۰ میلی‌ثانیه (۱ ثانیه) / ۱۰ps = فاصله‌های ۱۰۰ میلی‌ثانیه‌ای، یا ۱ درخواست مجاز در هر ۱۰۰ میلی‌ثانیه. درخواست دوم در فاصله ۱۰۰ میلی‌ثانیه انجام نخواهد شد. همچنین، درخواست یازدهم در یک ثانیه انجام نخواهد شد.

جدول زیر تأثیر <UseEffectiveCount> را بر حد نرخ مؤثر هر MP نشان می‌دهد:

مقدار <UseEffectiveCount>
false false false true true true
تعداد نمایندگان مجلس 8 4 2 8 4 2
مقدار <Rate> 10 10 10 40 ۴۰ 40
نرخ مؤثر به‌ازای هر MP 10 10 10 5 10 20
حد مجموع 80 40 20 ‫*۴۰ ‫*۴۰ ‫*۴۰
* همانند <Rate>.

در این مثال، توجه کنید که وقتی تعداد «واحد قیمت» از ۴ به ۲ کاهش می‌یابد، و <UseEffectiveCount> برابر با false است، نرخ مؤثر به‌ازای هر «واحد قیمت» یکسان می‌ماند (در ۱۰). اما وقتی <UseEffectiveCount> برابر با true باشد، نرخ مؤثر به‌ازای هر مگاپیکسل وقتی تعداد مگاپیکسل‌ها از ۴ به ۲ کاهش می‌یابد از ۱۰ به ۲۰ می‌رسد.

متغیرهای جریان

وقتی خط‌مشی «مهار جهش» اجرا می‌شود، متغیر جریان زیر تکمیل می‌شود:

متغیر نوع اجازه شرح
ratelimit.policy_name.failed بولی فقط خواندنی نشان می‌دهد که خط‌مشی ناموفق بوده است یا نه (true یا false).

برای اطلاعات بیشتر، به مرجع متغیرهای جریان مراجعه کنید.

مرجع خطا

This section describes the fault codes and error messages that are returned and fault variables that are set by Edge when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults.

Runtime errors

These errors can occur when the policy executes.

Fault code HTTP status Cause Fix
policies.ratelimit.FailedToResolveSpikeArrestRate 500 This error occurs if the reference to the variable containing the rate setting within the <Rate> element cannot be resolved to a value within the Spike Arrest policy. This element is mandatory and used to specify the spike arrest rate in the form of intpm or intps.
policies.ratelimit.InvalidMessageWeight 500 This error occurs if the value specified for the <MessageWeight> element through a flow variable is invalid (a non-integer value).
policies.ratelimit.SpikeArrestViolation 429

The rate limit was exceeded.

Deployment errors

These errors can occur when you deploy a proxy containing this policy.

Error name Cause Fix
InvalidAllowedRate If the spike arrest rate specified in the <Rate> element of the Spike Arrest Policy is not an integer or if the rate does not have ps or pm as a suffix, then the deployment of the API proxy fails.

Fault variables

These variables are set when a runtime error occurs. For more information, see What you need to know about policy errors.

Variables Where Example
fault.name="fault_name" fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. fault.name Matches "SpikeArrestViolation"
ratelimit.policy_name.failed policy_name is the user-specified name of the policy that threw the fault. ratelimit.SA-SpikeArrestPolicy.failed = true

Example error response

Shown below is an example error response:

{  
   "fault":{  
      "detail":{  
         "errorcode":"policies.ratelimit.SpikeArrestViolation"
      },
      "faultstring":"Spike arrest violation. Allowed rate : 10ps"
   }
}

Example fault rule

Shown below is an example fault rule to handle a SpikeArrestViolation fault:

<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>

کد وضعیت HTTP فعلی برای فراتر رفتن از حد نرخ تعیین‌شده توسط خط‌مشی «سهمیه» یا «مهار جهش» 429 (درخواست‌های بسیار زیاد) است. برای تغییر کد وضعیت HTTP به 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>"

طرح‌واره‌ها

هر نوع خط‌مشی با یک طرحواره XML (.xsd) تعریف می‌شود. برای مرجع، طرحواره‌های خط‌مشی در GitHub دردسترس است.

موضوعات مرتبط