Kebijakan SpikeArrest

Halaman ini berlaku untuk Apigee dan Apigee Hybrid.

Lihat dokumentasi Apigee Edge.

Ikon SpikeArrest dari UI

Kebijakan SpikeArrest melindungi dari lonjakan traffic dengan elemen <Rate>. Elemen ini membatasi jumlah permintaan yang diproses oleh proxy API dan dikirim ke backend, sehingga melindungi dari penurunan performa dan waktu nonaktif.

Kebijakan ini adalah kebijakan Standar dan dapat di-deploy ke jenis lingkungan apa pun. Untuk mengetahui informasi tentang jenis dan ketersediaan kebijakan dengan setiap jenis lingkungan, lihat Jenis kebijakan.

Perbedaan antara SpikeArrest dan Kuota

Kebijakan kuota mengonfigurasi jumlah pesan permintaan yang diizinkan untuk dikirimkan aplikasi klien ke API selama satu jam, hari, minggu, atau bulan. Kebijakan Kuota menerapkan batas konsumsi pada aplikasi klien dengan mempertahankan penghitung terdistribusi yang mencatat permintaan masuk.

Gunakan Kuota untuk menerapkan kontrak bisnis atau SLA dengan developer dan partner, bukan untuk pengelolaan traffic operasional. Gunakan SpikeArrest untuk melindungi dari lonjakan traffic API yang tiba-tiba. Lihat juga Membandingkan kebijakan Quota dan SpikeArrest.

Video

Video ini membahas kasus penggunaan untuk kebijakan ini:

Mengapa Anda Membutuhkannya

Bandingkan Kebijakan Kuota

Elemen <SpikeArrest>

Menentukan kebijakan SpikeArrest.

Nilai Default Lihat tab Kebijakan Default di bawah
Wajib? Opsional
Jenis Objek kompleks
Elemen Induk t/a
Elemen Turunan <Identifier>
<MessageWeight>
<Rate> (Wajib)
<UseEffectiveCount>

Sintaks

Elemen <SpikeArrest> menggunakan sintaksis berikut:

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

Kebijakan Default

Contoh berikut menunjukkan setelan default saat Anda menambahkan kebijakan SpikeArrest ke alur di UI:

<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>false</UseEffectiveCount>
</SpikeArrest>

Elemen ini memiliki atribut berikut yang umum untuk semua kebijakan:

Atribut Default Wajib? Deskripsi
name T/A Wajib

Nama internal kebijakan. Nilai atribut name dapat berisi huruf, angka, spasi, tanda hubung, garis bawah, dan titik. Nilai ini tidak boleh melebihi 255 karakter.

Secara opsional, gunakan elemen <DisplayName> untuk memberi label pada kebijakan di editor proxy UI pengelolaan dengan nama bahasa alami yang berbeda.

continueOnError false Opsional Tetapkan ke false untuk menampilkan error saat kebijakan gagal. Perilaku ini wajar terjadi untuk sebagian besar kebijakan. Tetapkan ke true agar eksekusi alur berlanjut meskipun setelah kebijakan gagal. Lihat juga:
enabled benar Opsional Tetapkan ke true untuk menerapkan kebijakan. Tetapkan ke false untuk menonaktifkan kebijakan. Kebijakan tidak akan diterapkan meskipun tetap terlampir ke alur.
async   false Tidak digunakan lagi Atribut ini tidak digunakan lagi.

Contoh

Contoh berikut menunjukkan beberapa cara Anda dapat menggunakan kebijakan SpikeArrest:

Contoh 1

Contoh berikut menetapkan kecepatan ke lima per detik:

<SpikeArrest name="SA-Static-5ps">
  <Rate>5ps</Rate>
  <UseEffectiveCount>false</UseEffectiveCount>
</SpikeArrest>

Contoh kebijakan ini mengizinkan maksimum 5 permintaan per detik. Dengan perataan, batas ini diterapkan sebagai maksimum satu permintaan untuk setiap interval milidetik 200 (1000/5).

Contoh 2

Contoh berikut menetapkan kecepatan ke 12 per menit:

<SpikeArrest name="SA-Static-12pm">
  <Rate>12pm</Rate>
  <UseEffectiveCount>true</UseEffectiveCount>
</SpikeArrest>

Contoh kebijakan ini mengizinkan maksimum 12 permintaan per menit dengan kecepatan satu permintaan per interval 5 detik (60/12). Jika ada lebih dari satu permintaan dalam interval 5 detik, permintaan tersebut diizinkan (tanpa perataan) asalkan jumlah permintaan kurang dari batas rasio yang dikonfigurasi, yaitu 12 per menit.

Contoh 3

Contoh berikut membatasi permintaan menjadi 12 per menit (satu permintaan diizinkan setiap lima detik, atau 60/12).

Selain itu, elemen <MessageWeight> menerima nilai kustom (variabel request_specific_weight) yang menyesuaikan bobot pesan untuk permintaan tertentu. Hal ini memberikan kontrol tambahan atas pembatasan untuk entitas yang diidentifikasi dengan elemen <Identifier>.

<SpikeArrest name="SA-With-Dynamic-Weight-1">
  <Rate>12pm</Rate>
  <Identifier ref="client_id" />
  <MessageWeight ref="request_specific_weight" />
  <UseEffectiveCount>true</UseEffectiveCount>
</SpikeArrest>

Contoh 4

Contoh berikut menginstruksikan SpikeArrest untuk mencari nilai runtime yang ditetapkan melalui permintaan yang diteruskan sebagai variabel alur request.header.runtime_rate:

<SpikeArrest name="SA-From-Inbound-Header-1">
  <Rate ref="request.header.runtime_rate" />
  <UseEffectiveCount>true</UseEffectiveCount>
</SpikeArrest>

Nilai variabel alur harus dalam bentuk intpm atau intps.

Untuk mencoba contoh ini, jalankan permintaan seperti berikut:

curl https://my-api-endpoint.net/price -H 'runtime_rate:30ps'

Biasanya, Anda tidak akan mengizinkan aplikasi panggilan untuk menetapkan batas frekuensi. Sebagai gantinya, Anda akan mendapatkan batas frekuensi dari nilai yang ditetapkan sebagai atribut kustom pada produk API, atau pada aplikasi klien.

Referensi elemen turunan

Bagian ini menjelaskan elemen turunan <SpikeArrest>.

<DisplayName>

Gunakan selain atribut name untuk memberi label pada kebijakan di editor proxy UI pengelolaan dengan nama yang berbeda dan lebih terdengar alami.

Elemen <DisplayName> umum untuk semua kebijakan.

Nilai Default T/A
Wajib? Opsional. Jika Anda menghilangkan <DisplayName>, nilai atribut name kebijakan akan digunakan.
Jenis String
Elemen Induk <PolicyElement>
Elemen Turunan Tidak ada

Elemen <DisplayName> menggunakan sintaksis berikut:

Sintaks

<PolicyElement>
  <DisplayName>POLICY_DISPLAY_NAME</DisplayName>
  ...
</PolicyElement>

Contoh

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

Elemen <DisplayName> tidak memiliki atribut atau elemen turunan.

<Identifier>

Memungkinkan Anda memilih cara mengelompokkan permintaan sehingga kebijakan SpikeArrest dapat diterapkan berdasarkan sesuatu dalam permintaan masuk. Misalnya, Anda dapat menerapkan batas frekuensi menurut ID developer, dalam hal ini semua permintaan yang dikirim oleh aplikasi yang dimiliki oleh developer tertentu akan berbagi satu jumlah SpikeArrest. Atau, Anda dapat menerapkan batas frekuensi berdasarkan ID klien, yang dalam hal ini setiap aplikasi klien akan tunduk pada penghitung batas frekuensi yang berbeda. Anda juga dapat merujuk ke variabel yang sebelumnya telah ditetapkan oleh proxy Anda. Variabel tersebut dapat menggabungkan beberapa faktor, misalnya, ID klien dan alamat IP klien.

Gunakan bersama dengan elemen <MessageWeight> untuk kontrol yang lebih mendetail atas pembatasan permintaan.

Jika Anda mengosongkan elemen <Identifier>, satu batas frekuensi akan diterapkan untuk semua permintaan ke proxy API tersebut.

Nilai Default t/a
Wajib? Opsional
Jenis String
Elemen Induk <SpikeArrest>
Elemen Turunan Tidak ada

Sintaks

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

Contoh 1

Contoh berikut menerapkan kebijakan SpikeArrest per ID developer:

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

Tabel berikut menjelaskan atribut <Identifier>:

Atribut Deskripsi Default Kehadiran
ref Mengidentifikasi variabel yang digunakan SpikeArrest untuk mengelompokkan permintaan masuk. Anda dapat menggunakan variabel alur apa pun untuk menunjukkan klien yang unik, seperti yang tersedia dengan kebijakan VerifyAPIKey. Anda juga dapat menetapkan variabel kustom menggunakan kebijakan JavaScript atau kebijakan AssignMessage. t/a Wajib

Elemen ini juga dibahas dalam postingan Komunitas Apigee ini.

<MessageWeight>

Menentukan bobot yang ditentukan untuk pesan saat ini. Bobot pesan mengubah dampak satu permintaan pada penghitungan laju SpikeArrest. Bobot pesan dapat berupa variabel alur apa pun, seperti header HTTP, parameter kueri, parameter formulir, atau konten isi pesan. Namun, biasanya Anda tidak akan menggunakan variabel yang berasal langsung dari permintaan masuk. Sebagai gantinya, Anda akan menggunakan variabel yang merepresentasikan atribut kustom pada produk API, atau pada aplikasi klien. Anda juga dapat menggunakan variabel kustom yang ditetapkan dengan nilai dinamis melalui kebijakan JavaScript atau kebijakan AssignMessage. Dalam semua kasus, nilai harus berupa bilangan bulat positif bukan nol.

Gunakan bobot bersama dengan <Identifier> untuk membatasi lebih lanjut permintaan dari klien atau aplikasi tertentu.

Misalnya, jika SpikeArrest <Rate> adalah 10pm, dan proxy menggunakan variabel yang menyimpan nilai 2 untuk bobot pesan, maka hanya 5 pesan per menit yang akan diizinkan untuk ID tertentu karena setiap permintaan dihitung sebagai 2.

Nilai Default t/a
Wajib? Opsional
Jenis Bilangan bulat
Elemen Induk <SpikeArrest>
Elemen Turunan Tidak ada

Sintaks

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

Bobot Variabel

Contoh berikut membatasi permintaan hingga 12 per menit (satu permintaan diizinkan setiap lima detik, atau 60/12):

<SpikeArrest name="SA-With-Dynamic-Weight-1">
  <Rate>12pm</Rate>
  <Identifier ref="client_id" />
  <MessageWeight ref="request_specific_weight" />
  <UseEffectiveCount>true</UseEffectiveCount>
</SpikeArrest>

Dalam contoh ini, <MessageWeight> menerima nilai kustom (variabel request_specific_weight, yang mungkin telah dihitung sebelumnya) yang menyesuaikan bobot pesan untuk permintaan tertentu. Hal ini memberikan kontrol tambahan atas pembatasan, berdasarkan kompleksitas permintaan.

Berat Statis

Contoh berikut membatasi permintaan hingga 1.000 per menit, dan setiap permintaan diberi bobot 1:

<SpikeArrest name="SA-Default-Weight-1">
  <Rate>1000pm</Rate>
  <Identifier ref="client_id" />
  <!-- omit <MessageWeight/> to use a default weight of 1 -->
  <UseEffectiveCount>true</UseEffectiveCount>
</SpikeArrest>

Tabel berikut menjelaskan atribut <MessageWeight>:

Atribut Deskripsi Kehadiran Default
ref Mengidentifikasi variabel alur yang berisi bobot pesan untuk klien tertentu. Nilai ini dapat berupa variabel alur apa pun, seperti parameter kueri HTTP, header, atau konten isi pesan. Untuk mengetahui informasi selengkapnya, lihat Referensi variabel alur. Anda juga dapat menetapkan variabel kustom menggunakan kebijakan JavaScript atau kebijakan AssignMessage. Wajib T/A

<Rate>

Menentukan kecepatan untuk membatasi lonjakan (atau burst) traffic dengan menetapkan jumlah permintaan yang diizinkan dalam interval per menit atau per detik. Anda dapat menggunakan elemen ini bersama dengan <Identifier> dan <MessageWeight> untuk membatasi traffic dengan lancar saat runtime dengan kontrol yang akurat. Gunakan elemen <UseEffectiveCount> untuk menetapkan algoritma pembatasan frekuensi yang digunakan oleh kebijakan.

Lihat bagian SpikeArrest di halaman Batas untuk mengetahui batas frekuensi maksimum yang dapat Anda tentukan.

Nilai Default t/a
Wajib? Wajib
Jenis Bilangan bulat
Elemen Induk <SpikeArrest>
Elemen Turunan Tidak ada

Sintaks

Anda dapat menentukan tarif dengan salah satu cara berikut:

  • Tarif statis yang Anda tentukan sebagai isi elemen <Rate>
  • Nilai variabel, yang dapat diteruskan oleh klien; mengidentifikasi nama variabel alur menggunakan atribut ref
<SpikeArrest
  continueOnError="[false|true]"
  enabled="[true|false]"
  name="policy_name"
>
  <Rate ref="flow_variable">rate[pm|ps]</Rate>
</SpikeArrest>

Nilai tarif yang valid (baik ditentukan sebagai nilai variabel atau di isi elemen) harus sesuai dengan format berikut:

  • intps (jumlah permintaan per detik, yang dihaluskan ke dalam interval milidetik)
  • intpm (jumlah permintaan per menit, dihaluskan ke dalam interval detik)

Nilai int harus berupa bilangan bulat positif bukan nol.

Contoh 1

Contoh berikut menetapkan kecepatan ke lima permintaan per detik:

<SpikeArrest name="SA-Static-5ps">
  <Rate>5ps</Rate>
  <UseEffectiveCount>false</UseEffectiveCount>
</SpikeArrest>

Kebijakan ini memperlancar laju menjadi satu permintaan yang diizinkan setiap 200 milidetik (1000/5).

Contoh 2

Contoh berikut menetapkan kecepatan ke 12 permintaan per menit:

<SpikeArrest name="SA-Static-12pm">
  <Rate>12pm</Rate>
  <UseEffectiveCount>true</UseEffectiveCount>
</SpikeArrest>

Contoh kebijakan ini memperlancar laju menjadi satu permintaan yang diizinkan setiap lima detik (60/12).

Tabel berikut menjelaskan atribut <Rate>:

Atribut Deskripsi Kehadiran Default
ref Mengidentifikasi variabel alur yang menentukan tarif. Nilai ini dapat berupa variabel alur apa pun, seperti parameter kueri HTTP, header, atau konten isi pesan, atau nilai seperti KVM. Untuk mengetahui informasi selengkapnya, lihat Referensi variabel alur.

Anda juga dapat menggunakan variabel kustom menggunakan kebijakan JavaScript atau kebijakan AssignMessage.

Jika Anda menentukan ref dan isi elemen ini, nilai ref akan diterapkan dan diprioritaskan saat variabel alur ditetapkan dalam permintaan. (Kebalikannya berlaku jika variabel yang diidentifikasi dalam ref tidak ditetapkan dalam permintaan.)

Contoh:

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

Dalam contoh ini, jika klien tidak meneruskan header custom_rate, maka laju untuk proxy API adalah 1 permintaan per menit untuk semua klien. Jika klien meneruskan header custom_rate, batas kecepatan akan menjadi 10 permintaan per detik untuk semua klien di proxy — hingga permintaan tanpa header custom_rate dikirim.

Anda dapat menggunakan <Identifier> untuk mengelompokkan permintaan guna menerapkan tarif kustom untuk berbagai jenis klien.

Jika Anda menentukan nilai untuk ref, tetapi tidak menetapkan kecepatan di isi elemen <Rate> dan klien tidak meneruskan nilai, kebijakan SpikeArrest akan menampilkan error.

Opsional t/a

<UseEffectiveCount>

Elemen ini memungkinkan Anda memilih di antara algoritma peredaman lonjakan yang berbeda dengan menyetel nilai ke true atau false, seperti yang dijelaskan di bawah:

true

Jika disetel ke true, SpikeArrest didistribusikan di suatu region. Artinya, jumlah permintaan disinkronkan di seluruh pemroses pesan (MP) dalam suatu region. Selain itu, algoritma pembatasan kapasitas "sliding window" diterapkan. Algoritma ini memberikan perilaku pembatasan kapasitas yang konsisten dan tidak "memperlancar" jumlah permintaan masuk yang dapat dikirim ke backend. Jika serangkaian permintaan dikirim dalam interval waktu yang singkat, permintaan tersebut diizinkan selama tidak melebihi batas frekuensi yang dikonfigurasi, sebagaimana ditetapkan dalam elemen <Rate>. Contoh:

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

false (default)

Jika disetel ke false (default), kebijakan SpikeArrest menggunakan algoritma "token bucket" yang memperlancar lonjakan traffic dengan membagi batas kecepatan yang Anda tentukan ke dalam interval yang lebih kecil. Kelemahan dari pendekatan ini adalah beberapa permintaan yang sah yang masuk dalam interval waktu singkat berpotensi ditolak.

Misalnya, Anda memasukkan kecepatan 30 pm (30 permintaan per menit). Dalam pengujian, Anda mungkin berpikir Anda dapat mengirim 30 permintaan dalam 1 detik, selama permintaan tersebut masuk dalam satu menit. Namun, kebijakan tidak menerapkan setelan dengan cara tersebut. Jika dipikir-pikir, 30 permintaan dalam periode 1 detik dapat dianggap sebagai lonjakan kecil di beberapa lingkungan.

  • Rasio per menit akan disesuaikan menjadi permintaan penuh yang diizinkan dalam interval detik.

    Misalnya, 30pm di-smoothing seperti ini:
    60 detik (1 menit) / 30pm = interval 2 detik, atau 1 permintaan diizinkan setiap 2 detik. Permintaan kedua dalam waktu 2 detik akan gagal. Selain itu, permintaan ke-31 dalam satu menit akan gagal.

  • Kecepatan per detik dihaluskan menjadi permintaan penuh yang diizinkan dalam interval milidetik.

    Misalnya, 10ps akan di-smoothing seperti ini:
    1.000 milidetik (1 detik) / 10ps = interval 100 milidetik, atau 1 permintaan diizinkan setiap 100 milidetik. Permintaan kedua dalam waktu 100 md akan gagal. Selain itu, permintaan ke-11 dalam satu detik akan gagal.

Nilai Default Salah
Wajib? Opsional
Jenis Boolean
Elemen Induk <SpikeArrest>
Elemen Turunan Tidak ada

Tabel berikut menjelaskan atribut elemen <UseEffectiveCount>:

Atribut Deskripsi Default Kehadiran
ref Mengidentifikasi variabel yang berisi nilai <UseEffectiveCount>. Nilai ini dapat berupa variabel alur apa pun, seperti parameter kueri HTTP, header, atau konten isi pesan. Untuk mengetahui informasi selengkapnya, lihat Referensi variabel alur. Anda juga dapat menetapkan variabel kustom menggunakan kebijakan JavaScript atau kebijakan AssignMessage. t/a Opsional

Variabel alur

Saat kebijakan SpikeArrest dijalankan, variabel alur berikut akan diisi:

Properti Jenis Baca/Tulis Deskripsi Cakupan dimulai
ratelimit.policy_name.allowed.count Long Hanya Baca Menampilkan jumlah kuota yang diizinkan. PostClientFlow
ratelimit.policy_name.used.count Long Hanya Baca Menampilkan kuota saat ini yang digunakan dalam interval kuota. PostClientFlow
ratelimit.policy_name.available.count Long Hanya Baca Menampilkan jumlah kuota yang tersedia dalam interval kuota. PostClientFlow
ratelimit.policy_name.exceed.count Long Hanya Baca Menampilkan 1 setelah kuota terlampaui. PostClientFlow
ratelimit.policy_name.total.exceed.count Long Hanya Baca Menampilkan 1 setelah kuota terlampaui. PostClientFlow
ratelimit.policy_name.expiry.time Long Hanya Baca

Menampilkan waktu UTC (dalam milidetik), yang menentukan kapan kuota berakhir dan kapan interval kuota baru dimulai.

Jika jenis kebijakan Kuota adalah rollingwindow, nilai ini tidak valid karena interval kuota tidak pernah berakhir.

PostClientFlow
ratelimit.policy_name.identifier String Hanya Baca Menampilkan referensi ID (klien) yang dilampirkan ke kebijakan PostClientFlow
ratelimit.policy_name.class String Hanya Baca Menampilkan class yang terkait dengan ID klien PostClientFlow
ratelimit.policy_name.class.allowed.count Long Hanya Baca Menampilkan jumlah kuota yang diizinkan yang ditentukan dalam class PostClientFlow
ratelimit.policy_name.class.used.count Long Hanya Baca Menampilkan kuota yang digunakan dalam kelas PostClientFlow
ratelimit.policy_name.class.available.count Long Hanya Baca Menampilkan jumlah kuota yang tersedia di class PostClientFlow
ratelimit.policy_name.class.exceed.count Long Hanya Baca Menampilkan jumlah permintaan yang melebihi batas di kelas dalam interval kuota saat ini PostClientFlow
ratelimit.policy_name.class.total.exceed.count Long Hanya Baca Menampilkan jumlah total permintaan yang melampaui batas di kelas di semua interval kuota, sehingga merupakan jumlah class.exceed.count untuk semua interval kuota. PostClientFlow
ratelimit.policy_name.failed Boolean Hanya Baca

Menunjukkan apakah kebijakan gagal atau tidak (benar atau salah).

PostClientFlow

Untuk mengetahui informasi selengkapnya, lihat Referensi variabel alur.

Referensi error

Bagian ini menjelaskan kode error dan pesan error yang ditampilkan serta variabel error yang ditetapkan oleh Apigee saat kebijakan ini memicu error. Informasi ini penting untuk diketahui jika Anda mengembangkan aturan error untuk menangani error. Untuk mempelajari lebih lanjut, lihat Yang perlu Anda ketahui tentang error kebijakan dan Menangani error.

Error runtime

Error ini dapat terjadi saat kebijakan dijalankan.

Kode kerusakan Status HTTP Penyebab Perbaiki
policies.ratelimit.FailedToResolveSpikeArrestRate 500 Error ini terjadi jika referensi ke variabel yang berisi setelan tarif dalam elemen <Rate> tidak dapat di-resolve ke nilai dalam kebijakan SpikeArrest. Elemen ini bersifat wajib dan digunakan untuk menentukan rasio penangkapan lonjakan dalam bentuk intpm atau intps.
policies.ratelimit.InvalidMessageWeight 500 Error ini terjadi jika nilai yang ditentukan untuk elemen <MessageWeight> melalui variabel alur tidak valid (nilai non-bilangan bulat).
policies.ratelimit.SpikeArrestViolation 429 Batas kapasitas maksimum terlampaui.

Error saat deployment

Error ini dapat terjadi saat Anda men-deploy proxy yang berisi kebijakan ini.

Nama error Penyebab Perbaiki
InvalidAllowedRate Jika rasio penangkapan lonjakan yang ditentukan dalam elemen <Rate> dari kebijakan SpikeArrest bukan bilangan bulat atau jika rasio tidak memiliki ps atau pm sebagai akhiran, deployment proxy API akan gagal.

Variabel error

Variabel ini ditetapkan saat error runtime terjadi. Untuk mengetahui informasi selengkapnya, lihat Yang perlu Anda ketahui tentang error kebijakan.

Variabel Dari mana Contoh
fault.name="fault_name" fault_name adalah nama error, seperti yang tercantum dalam tabel Runtime errors di atas. Nama error adalah bagian terakhir dari kode error. fault.name Matches "SpikeArrestViolation"
ratelimit.policy_name.failed policy_name adalah nama kebijakan yang ditentukan pengguna yang menampilkan error. ratelimit.SA-SpikeArrestPolicy.failed = true

Contoh respons error

Berikut adalah contoh respons error:

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

Contoh aturan error

Berikut adalah contoh aturan error untuk menangani error 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>

Kode status HTTP saat ini untuk melampaui batas frekuensi yang ditetapkan oleh kebijakan Quota atau SpikeArrest adalah 429 (Terlalu Banyak Permintaan).

Skema

Setiap jenis kebijakan ditentukan oleh skema XML (.xsd). Sebagai referensi, skema kebijakan tersedia di GitHub.

Topik terkait