سیاست SpikeArrest

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

آیکون Spike Arrest از رابط کاربری Edge

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

عنصر <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>

سیاست پیش‌فرض

مثال زیر تنظیمات پیش‌فرض را هنگام اضافه کردن یک سیاست Spike Arrest به جریان خود در رابط کاربری 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 N/A ضروری

نام داخلی سیاست. مقدار مشخصه name می تواند شامل حروف، اعداد، فاصله، خط تیره، زیرخط و نقطه باشد. این مقدار نمی تواند بیش از 255 کاراکتر باشد.

در صورت تمایل، از عنصر <DisplayName> برای برچسب گذاری خط مشی در ویرایشگر پروکسی UI مدیریت با نامی به زبان طبیعی دیگر استفاده کنید.

continueOnError نادرست اختیاری برای بازگرداندن خطا در صورت شکست خط مشی، روی "false" تنظیم کنید. این رفتار مورد انتظار برای اکثر سیاست ها است. روی "true" تنظیم کنید تا اجرای جریان حتی پس از شکست خط مشی ادامه یابد.
enabled درست است، واقعی اختیاری برای اجرای این خط‌مشی روی «درست» تنظیم کنید. برای «خاموش کردن» خط مشی، روی «نادرست» تنظیم کنید. این سیاست حتی اگر به یک جریان وابسته باشد اجرا نخواهد شد.
async نادرست منسوخ این ویژگی منسوخ شده است.

مثال‌ها

مثال‌های زیر برخی از روش‌های استفاده از سیاست Spike Arrest را نشان می‌دهند:

مثال ۱

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

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

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

مثال ۳

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

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

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

مثال ۴

مثال زیر به Spike Arrest دستور می‌دهد تا به دنبال مقدار زمان اجرا که از طریق درخواستی که به عنوان متغیر جریان request.header.runtime_rate ارسال می‌شود، تنظیم شده است، بگردد:

<SpikeArrest name="Spike-Arrest-1">
  <Rate ref="request.header.runtime_rate" />
</SpikeArrest>

مقدار متغیر جریان باید به شکل int pm یا int ps باشد.

برای امتحان کردن این مثال، درخواستی مانند زیر اجرا کنید:

curl http://myorg-myenv.apigee.net/price -H 'runtime_rate:30ps'

مرجع عنصر فرزند

این بخش عناصر فرزند <SpikeArrest> را شرح می‌دهد.

<DisplayName>

علاوه بر ویژگی name ، برای برچسب گذاری خط مشی در ویرایشگر پروکسی رابط کاربری مدیریت با نامی متفاوت و طبیعی تر، از آن استفاده کنید.

عنصر <DisplayName> در همه خط مشی ها مشترک است.

مقدار پیش فرض n/a
مورد نیاز؟ اختیاری. اگر <DisplayName> را حذف کنید، از مقدار ویژگی name خط مشی استفاده می شود
تایپ کنید رشته
عنصر والد < PolicyElement >
عناصر کودک هیچ کدام

عنصر <DisplayName> از نحو زیر استفاده می کند:

نحو

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

مثال

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

عنصر <DisplayName> هیچ ویژگی یا عنصر فرزند ندارد.

<Identifier>

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

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

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

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

نحو

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

مثال ۱

مثال زیر سیاست Spike Arrest را برای هر شناسه توسعه‌دهنده اعمال می‌کند:

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

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

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

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

<MessageWeight>

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

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

برای مثال، اگر Spike Arrest <Rate> 10pm باشد و یک برنامه درخواست‌هایی با وزن 2 ارسال کند، فقط پنج پیام در دقیقه از آن کلاینت مجاز است زیرا هر درخواست 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، هدر یا محتوای بدنه پیام باشد. برای اطلاعات بیشتر، به مرجع متغیرهای جریان مراجعه کنید. همچنین می‌توانید متغیرهای سفارشی را با استفاده از سیاست جاوا اسکریپت یا سیاست 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>

مقادیر معتبر نرخ (چه به عنوان یک مقدار متغیر و چه در بدنه عنصر تعریف شده باشند) باید با فرمت زیر مطابقت داشته باشند:

  • int ps (تعداد درخواست‌ها در هر ثانیه، که به فواصل میلی‌ثانیه تقسیم می‌شود)
  • int pm (تعداد درخواست‌ها در هر دقیقه، که به فواصل ثانیه‌ای تبدیل می‌شود)

مقدار 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>

این سیاست نمونه، نرخ را به یک درخواست مجاز در هر پنج ثانیه (60/12) کاهش می‌دهد.

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

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

همچنین می‌توانید با استفاده از سیاست جاوا اسکریپت یا سیاست AssignMessage از متغیرهای سفارشی استفاده کنید.

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

برای مثال:

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

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

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

اگر مقداری برای ref تعیین کنید اما rate را در بدنه عنصر <Rate> تنظیم نکنید و کلاینت مقداری ارسال نکند، آنگاه سیاست Spike Arrest خطا می‌دهد.

اختیاری ناموجود

<UseEffectiveCount>

هنگام استفاده از گروه‌های مقیاس‌بندی خودکار، تعداد Spike Arrest شما را در بین پردازنده‌های پیام (MP) توزیع می‌کند.

نحو

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

مثال ۱

مثال زیر مقدار <UseEffectiveCount> را برابر با true قرار می‌دهد:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

مقدار <UseEffectiveCount>
false false false true true true
تعداد نمایندگان مجلس ۸ ۴ ۲ ۸ ۴ ۲
مقدار <Rate> ۱۰ ۱۰ ۱۰ ۴۰ ۴۰ ۴۰
نرخ مؤثر به ازای هر MP ۱۰ ۱۰ ۱۰ ۵ ۱۰ ۲۰
محدودیت مصالح ۸۰ ۴۰ ۲۰ ۴۰* ۴۰* ۴۰*
* مشابه <Rate> است.

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

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

وقتی یک سیاست Spike Arrest اجرا می‌شود، متغیر جریان زیر مقداردهی می‌شود:

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

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

مرجع خطا

این بخش کدهای خطا و پیام‌های خطایی را که برگردانده می‌شوند و متغیرهای خطا را که توسط Edge تنظیم می‌شوند، هنگامی که این خط‌مشی خطا را راه‌اندازی می‌کند، توضیح می‌دهد. این اطلاعات برای دانستن اینکه آیا در حال توسعه قوانین خطا برای رسیدگی به خطاها هستید، مهم است. برای کسب اطلاعات بیشتر، آنچه را که باید در مورد خطاهای خط مشی و مدیریت خطاها بدانید را ببینید.

خطاهای زمان اجرا

این خطاها ممکن است هنگام اجرای سیاست رخ دهند.

کد خطا وضعیت HTTP علت رفع کنید
policies.ratelimit.FailedToResolveSpikeArrestRate 500 این خطا در صورتی رخ می دهد که ارجاع به متغیر حاوی تنظیم نرخ در عنصر <Rate> به مقداری در خط مشی Spike Arrest قابل حل نباشد. این عنصر اجباری است و برای تعیین نرخ توقف سنبله به صورت int pm یا int ps استفاده می شود.
policies.ratelimit.InvalidMessageWeight 500 این خطا در صورتی رخ می دهد که مقدار تعیین شده برای عنصر <MessageWeight> از طریق متغیر جریان نامعتبر باشد (یک مقدار غیر صحیح).
policies.ratelimit.SpikeArrestViolation 429

از حد مجاز فراتر رفت.

خطاهای استقرار

این خطاها ممکن است زمانی رخ دهند که یک پروکسی حاوی این خط مشی را مستقر می کنید.

نام خطا علت رفع کنید
InvalidAllowedRate اگر نرخ توقف اسپک مشخص شده در عنصر <Rate> سیاست دستگیری Spike یک عدد صحیح نباشد یا اگر نرخ پسوند ps یا pm نداشته باشد، در آن صورت استقرار پراکسی API با شکست مواجه می‌شود.

متغیرهای خطا

این متغیرها زمانی تنظیم می شوند که یک خطای زمان اجرا رخ دهد. برای اطلاعات بیشتر، به آنچه باید در مورد خطاهای خط مشی بدانید مراجعه کنید.

متغیرها کجا مثال
fault.name=" fault_name " fault_name نام خطا است، همانطور که در جدول خطاهای Runtime در بالا ذکر شده است. نام خطا آخرین قسمت کد خطا است. 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>

کد وضعیت فعلی HTTP برای عبور از محدودیت نرخ تعیین‌شده توسط سیاست Quota یا Spike Arrest، 429 (درخواست‌های بیش از حد) است. برای تغییر کد وضعیت HTTP به 500 (خطای داخلی سرور)، ویژگی features.isHTTPStatusTooManyRequestEnabled را با استفاده از API ویژگی‌های سازماندهی Update ، روی 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 موجود است.

مباحث مرتبط