Chính sách của SpikeArrest

Bạn đang xem tài liệu về Apigee Edge.
Truy cập vào tài liệu Apigee X.
info

Biểu tượng Spike Arrest (Chống đột biến) trên giao diện người dùng Edge

Chính sách Chặn đột biến giúp bảo vệ khỏi tình trạng lưu lượng truy cập tăng đột biến bằng phần tử <Rate>. Phần tử này điều tiết số lượng yêu cầu được một proxy API xử lý và gửi đến một phần phụ trợ, giúp bảo vệ chống lại tình trạng hiệu suất bị chậm và thời gian ngừng hoạt động.

Phần tử <SpikeArrest>

Xác định chính sách Chặn đột biến.

Giá trị mặc định Xem thẻ Chính sách mặc định bên dưới
Bắt buộc? Không bắt buộc
Loại Đối tượng phức tạp
Phần tử mẹ Không có
Phần tử con <Identifier>
<MessageWeight>
<Rate> (Bắt buộc)
<UseEffectiveCount>

Cú pháp

Phần tử <SpikeArrest> sử dụng cú pháp sau:

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

Chính sách mặc định

Ví dụ sau đây cho thấy các chế độ cài đặt mặc định khi bạn thêm chính sách Chống đột biến vào quy trình của mình trong Giao diện người dùng 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>

Phần tử này có các thuộc tính chung cho tất cả các chính sách:

Thuộc tính Mặc định Bắt buộc? Nội dung mô tả
name Không áp dụng Bắt buộc

Tên nội bộ của chính sách. Giá trị của thuộc tính name có thể chứa chữ cái, số, dấu cách, dấu gạch nối, dấu gạch dưới và dấu chấm. Giá trị này không được vượt quá 255 ký tự.

Nếu muốn, hãy sử dụng phần tử <DisplayName> để gắn nhãn chính sách trong trình chỉnh sửa proxy của giao diện người dùng quản lý bằng một tên ngôn ngữ tự nhiên khác.

continueOnError sai Không bắt buộc Đặt thành "false" để trả về lỗi khi một chính sách không thành công. Đây là hành vi dự kiến đối với hầu hết các chính sách. Đặt thành "true" để tiếp tục thực thi luồng ngay cả sau khi chính sách không hoạt động.
enabled true Không bắt buộc Đặt thành "true" để thực thi chính sách này. Đặt thành "false" để "tắt" chính sách này. Chính sách sẽ không được thực thi ngay cả khi vẫn được liên kết với một luồng.
async   sai Không được dùng nữa Thuộc tính này không còn được dùng nữa.

Ví dụ

Các ví dụ sau đây minh hoạ một số cách bạn có thể sử dụng chính sách Chống đột biến:

Ví dụ 1

Ví dụ sau đây đặt tốc độ thành 5 lần mỗi giây:

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

Chính sách này điều chỉnh tốc độ thành một yêu cầu được phép sau mỗi 200 mili giây (1000/5).

Ví dụ 2

Ví dụ sau đây đặt tốc độ thành 300 mỗi phút:

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

Tốc độ hiệu quả là 300pm, tức là cứ 200 mili giây, một mã thông báo mới sẽ được thêm vào nhóm. Kích thước nhóm luôn được định cấu hình là 10% của messagesPerPeriod. Do đó, với messagesPerPeriod là 300, kích thước nhóm là 30 mã thông báo.

Ví dụ 3

Ví dụ sau đây giới hạn số yêu cầu ở mức 12 yêu cầu mỗi phút (cứ 5 giây được phép gửi một yêu cầu, tức là 60/12):

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

Ngoài ra, phần tử <MessageWeight> chấp nhận một giá trị tuỳ chỉnh (tiêu đề weight) để điều chỉnh trọng số thông báo cho các ứng dụng hoặc máy khách cụ thể. Điều này giúp bạn có thêm quyền kiểm soát đối với việc điều tiết cho các thực thể được xác định bằng phần tử <Identifier>.

Ví dụ 4

Ví dụ sau đây hướng dẫn Spike Arrest tìm kiếm một giá trị thời gian chạy được đặt thông qua yêu cầu được truyền vào dưới dạng biến luồng request.header.runtime_rate:

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

Giá trị của biến luồng phải ở dạng intpm hoặc intps.

Để thử ví dụ này, hãy thực hiện một yêu cầu như sau:

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

Tài liệu tham khảo về phần tử con

Phần này mô tả các phần tử con của <SpikeArrest>.

<DisplayName>

Sử dụng cùng với thuộc tính name để gắn nhãn chính sách trong trình chỉnh sửa proxy giao diện người dùng quản lý bằng một tên khác nghe tự nhiên hơn.

Phần tử <DisplayName> là phần tử chung cho tất cả các chính sách.

Giá trị mặc định Không có
Bắt buộc? Không bắt buộc. Nếu bạn bỏ qua <DisplayName>, giá trị của thuộc tính name trong chính sách sẽ được sử dụng
Loại Chuỗi
Phần tử mẹ <PolicyElement>
Phần tử con Không có

Phần tử <DisplayName> sử dụng cú pháp sau:

Cú pháp

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

Ví dụ:

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

Phần tử <DisplayName> không có thuộc tính hoặc phần tử con.

<Identifier>

Cho phép bạn chọn cách nhóm các yêu cầu để có thể áp dụng chính sách Chống đột biến dựa trên máy khách. Ví dụ: bạn có thể nhóm các yêu cầu theo mã nhận dạng nhà phát triển. Trong trường hợp này, mỗi yêu cầu của nhà phát triển sẽ được tính vào tỷ lệ Ngăn chặn đột biến của riêng họ chứ không phải tất cả các yêu cầu đến proxy.

Sử dụng kết hợp với phần tử <MessageWeight> để kiểm soát việc điều tiết yêu cầu một cách chi tiết hơn.

Nếu bạn để trống phần tử <Identifier>, thì một hạn mức tốc độ sẽ được thực thi cho tất cả các yêu cầu vào proxy API đó.

Giá trị mặc định Không có
Bắt buộc? Không bắt buộc
Loại Chuỗi
Phần tử mẹ <SpikeArrest>
Phần tử con Không có

Cú pháp

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

Ví dụ 1

Ví dụ sau đây áp dụng chính sách Chống đột biến cho mỗi mã nhận dạng nhà phát triển:

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

Bảng sau đây mô tả các thuộc tính của <Identifier>:

Thuộc tính Mô tả Mặc định Sự hiện diện
ref Xác định biến mà Spike Arrest dùng để nhóm các yêu cầu đến. Bạn có thể sử dụng bất kỳ biến luồng nào để chỉ ra một ứng dụng khách duy nhất, chẳng hạn như những biến có sẵn trong chính sách VerifyAPIKey. Bạn cũng có thể đặt các biến tuỳ chỉnh bằng chính sách JavaScript hoặc chính sách AssignMessage. Không có Bắt buộc

Phần tử này cũng được thảo luận trong bài đăng sau đây trên Cộng đồng Apigee: http://community.apigee.com/questions/2807/how-does-the-edge-quota-policy-work-when-no-identi.html.

<MessageWeight>

Chỉ định trọng số được xác định cho từng thông báo. Trọng số thông báo sửa đổi mức tác động của một yêu cầu duy nhất đối với việc tính toán tỷ lệ Chặn đột biến. Trọng số thông báo có thể là bất kỳ biến luồng nào, chẳng hạn như tiêu đề HTTP, tham số truy vấn, tham số biểu mẫu hoặc nội dung thông báo. Bạn cũng có thể sử dụng các biến tuỳ chỉnh bằng chính sách JavaScript hoặc chính sách AssignMessage.

Sử dụng cùng với <Identifier> để điều chỉnh thêm các yêu cầu theo ứng dụng hoặc máy khách cụ thể.

Ví dụ: nếu Spike Arrest <Rate>10pm và một ứng dụng gửi các yêu cầu có trọng số là 2, thì chỉ được phép gửi 5 thông báo mỗi phút từ ứng dụng đó vì mỗi yêu cầu được tính là 2.

Giá trị mặc định Không có
Bắt buộc? Không bắt buộc
Loại Số nguyên
Phần tử mẹ <SpikeArrest>
Phần tử con Không có

Cú pháp

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

Ví dụ 1

Ví dụ sau đây giới hạn số yêu cầu ở mức 12 yêu cầu mỗi phút (cứ 5 giây được phép gửi một yêu cầu, tức là 60/12):

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

Trong ví dụ này, <MessageWeight> chấp nhận một giá trị tuỳ chỉnh (tiêu đề weight trong yêu cầu) để điều chỉnh trọng số thông báo cho các ứng dụng cụ thể. Điều này giúp bạn có thêm quyền kiểm soát đối với việc điều tiết cho các thực thể được xác định bằng phần tử <Identifier>.

Bảng sau đây mô tả các thuộc tính của <MessageWeight>:

Thuộc tính Mô tả Sự hiện diện Mặc định
ref Xác định biến luồng chứa trọng lượng thông báo cho khách hàng cụ thể. Đây có thể là bất kỳ biến luồng nào, chẳng hạn như tham số truy vấn HTTP, tiêu đề hoặc nội dung thông báo. Để biết thêm thông tin, hãy xem phần Tài liệu tham khảo về các biến trong luồng. Bạn cũng có thể đặt các biến tuỳ chỉnh bằng chính sách JavaScript hoặc chính sách AssignMessage. Bắt buộc Không áp dụng

<Rate>

Chỉ định tốc độ giới hạn các đợt tăng đột biến lưu lượng truy cập bằng cách đặt số lượng yêu cầu được phép trong khoảng thời gian mỗi phút hoặc mỗi giây. Bạn cũng có thể sử dụng phần tử này cùng với <Identifier><MessageWeight> để điều tiết lưu lượng truy cập một cách mượt mà trong thời gian chạy bằng cách chấp nhận các giá trị từ ứng dụng.

Giá trị mặc định Không có
Bắt buộc? Bắt buộc
Loại Số nguyên
Phần tử mẹ <SpikeArrest>
Phần tử con Không có

Cú pháp

Bạn có thể chỉ định mức giá theo một trong những cách sau:

  • Một mức giá cố định mà bạn chỉ định làm nội dung của phần tử <Rate>
  • Giá trị biến mà ứng dụng có thể truyền; xác định tên của biến luồng bằng thuộc tính ref
<SpikeArrest
  continueOnError="[false|true]"
  enabled="[true|false]"
  name="policy_name"
>
  <Rate ref="flow_variable">rate[pm|ps]</Rate>
</SpikeArrest>

Các giá trị tỷ lệ hợp lệ (được xác định là giá trị biến hoặc trong nội dung của phần tử) phải tuân theo định dạng sau:

  • intps (số yêu cầu mỗi giây, được làm mượt thành các khoảng thời gian mili giây)
  • intpm (số yêu cầu mỗi phút, được làm mượt thành các khoảng thời gian tính bằng giây)

Giá trị của int phải là một số nguyên dương khác 0.

Ví dụ 1

Ví dụ sau đây đặt tốc độ thành 5 yêu cầu mỗi giây:

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

Chính sách này điều chỉnh tốc độ thành một yêu cầu được phép sau mỗi 200 mili giây (1000/5).

Ví dụ 2

Ví dụ sau đây đặt tốc độ thành 12 yêu cầu mỗi phút:

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

Chính sách mẫu này điều chỉnh tốc độ thành một yêu cầu được phép sau mỗi 5 giây (60/12).

Bảng sau đây mô tả các thuộc tính của <Rate>:

Thuộc tính Mô tả Sự hiện diện Mặc định
ref Xác định một biến luồng chỉ định tốc độ. Đây có thể là bất kỳ biến luồng nào, chẳng hạn như tham số truy vấn HTTP, tiêu đề hoặc nội dung thông báo, hoặc một giá trị như KVM. Để biết thêm thông tin, hãy xem phần Tài liệu tham khảo về các biến trong luồng.

Bạn cũng có thể sử dụng các biến tuỳ chỉnh bằng chính sách JavaScript hoặc chính sách AssignMessage.

Nếu bạn xác định cả ref nội dung của phần tử này, thì giá trị của ref sẽ được áp dụng và được ưu tiên khi biến luồng được đặt trong yêu cầu. (Điều ngược lại sẽ xảy ra khi biến được xác định trong ref không được đặt trong yêu cầu.)

Ví dụ:

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

Trong ví dụ này, nếu máy khách không truyền tiêu đề "custom_rate", thì tốc độ cho proxy API là 1 yêu cầu mỗi phút cho tất cả máy khách. Nếu máy khách truyền tiêu đề "custom_rate", thì giới hạn tốc độ sẽ là 10 yêu cầu mỗi giây cho tất cả máy khách trên proxy – cho đến khi một yêu cầu không có tiêu đề "custom_rate" được gửi.

Bạn có thể dùng <Identifier> để nhóm các yêu cầu nhằm thực thi mức phí tuỳ chỉnh cho nhiều loại máy khách.

Nếu bạn chỉ định một giá trị cho ref nhưng không đặt tỷ lệ trong nội dung của phần tử <Rate> và máy khách không truyền giá trị, thì chính sách Chống đột biến sẽ gửi lỗi.

Không bắt buộc Không có

<UseEffectiveCount>

Phân phối số lượng Spike Arrest trên các Trình xử lý thông báo (MP) khi sử dụng các nhóm có tính năng tự động mở rộng quy mô.

Cú pháp

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

Ví dụ 1

Ví dụ sau đây đặt <UseEffectiveCount> thành true:

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

Phần tử <UseEffectiveCount> là phần tử không bắt buộc. Giá trị mặc định là false khi bạn bỏ qua phần tử này trong chính sách Chặn đột biến.

Giá trị mặc định Sai
Bắt buộc? Không bắt buộc
Loại Boolean
Phần tử mẹ <SpikeArrest>
Phần tử con Không có

Bảng sau đây mô tả các thuộc tính của phần tử <UseEffectiveCount>:

Thuộc tính Mô tả Mặc định Sự hiện diện
ref Xác định biến chứa giá trị của <UseEffectiveCount>. Đây có thể là bất kỳ biến luồng nào, chẳng hạn như tham số truy vấn HTTP, tiêu đề hoặc nội dung thông báo. Để biết thêm thông tin, hãy xem phần Tài liệu tham khảo về các biến trong luồng. Bạn cũng có thể đặt các biến tuỳ chỉnh bằng chính sách JavaScript hoặc chính sách AssignMessage. Không có Không bắt buộc

Tác dụng của <UseEffectiveCount> phụ thuộc vào giá trị của nó:

  • true: Giới hạn tốc độ tăng đột biến của MP là <Rate> chia cho số lượng MP hiện tại trong cùng một nhóm. Giới hạn tổng hợp là giá trị của <Rate>. Khi các MP được thêm (hoặc xoá) một cách linh động, hạn mức tăng đột biến riêng lẻ của chúng sẽ tăng (hoặc giảm), nhưng hạn mức tổng hợp sẽ vẫn giữ nguyên.
  • false: Giới hạn tốc độ tăng đột biến của mỗi MP chỉ đơn giản là giá trị của <Rate>. Giới hạn tổng hợp là tổng của tỷ lệ tất cả các MP. Khi các MP được thêm (hoặc xoá), giới hạn tốc độ tăng đột biến riêng lẻ của chúng sẽ vẫn giữ nguyên, nhưng giới hạn tổng hợp sẽ tăng (hoặc giảm).

Chính sách SpikeArrest sử dụng thuật toán "thùng mã thông báo" giúp làm mượt các đột biến lưu lượng truy cập bằng cách chia giới hạn tốc độ mà bạn chỉ định thành các khoảng thời gian nhỏ hơn. Một hạn chế của phương pháp này là nhiều yêu cầu hợp lệ đến trong một khoảng thời gian ngắn có thể bị từ chối.

Ví dụ: giả sử bạn nhập tốc độ là 30pm (30 yêu cầu mỗi phút). Trong quá trình kiểm thử, bạn có thể nghĩ rằng mình có thể gửi 30 yêu cầu trong 1 giây, miễn là các yêu cầu đó được gửi trong vòng 1 phút. Nhưng chính sách không thực thi chế độ cài đặt theo cách đó. Nếu bạn nghĩ về điều này, 30 yêu cầu trong khoảng thời gian 1 giây có thể được coi là một mức tăng đột biến nhỏ trong một số môi trường.

  • Tốc độ mỗi phút được làm mượt thành số yêu cầu đầy đủ được phép trong khoảng thời gian giây.

    Ví dụ: 30pm được làm mượt như sau:
    60 giây (1 phút) / 30pm = khoảng thời gian 2 giây hoặc 1 yêu cầu được phép cứ sau 2 giây. Yêu cầu thứ hai trong vòng 2 giây sẽ không thành công. Ngoài ra, yêu cầu thứ 31 trong vòng một phút sẽ không thành công.

  • Tốc độ mỗi giây được làm mượt thành các yêu cầu đầy đủ được phép trong khoảng thời gian mili giây.

    Ví dụ: 10ps được làm mượt như sau:
    1000 mili giây (1 giây) / 10ps = khoảng thời gian 100 mili giây hoặc 1 yêu cầu được phép thực hiện sau mỗi 100 mili giây. Yêu cầu thứ hai trong vòng 100 mili giây sẽ không thành công. Ngoài ra, yêu cầu thứ 11 trong vòng một giây sẽ không thành công.

Bảng sau đây cho biết ảnh hưởng của <UseEffectiveCount> đến giới hạn tốc độ hiệu quả của từng MP:

Giá trị của <UseEffectiveCount>
false false false true true true
Số lượng nghị sĩ 8 4 2 8 4 2
Giá trị của <Rate> 10 10 10 40 40 40
Tỷ lệ hiệu quả trên mỗi MP 10 10 10 5 10 20
Hạn mức tổng hợp 80 40 20 40* 40* 40*
* Tương tự như <Rate>.

Trong ví dụ này, hãy lưu ý rằng khi số lượng MP giảm từ 4 xuống 2 và <UseEffectiveCount>false, thì tỷ lệ hiệu quả trên mỗi MP vẫn giữ nguyên (ở mức 10). Nhưng khi <UseEffectiveCount>true, tỷ lệ hiệu quả trên mỗi MP sẽ tăng từ 10 lên 20 khi số lượng MP giảm từ 4 xuống 2.

Biến luồng

Khi chính sách Ngăn chặn đột biến thực thi, biến luồng sau đây sẽ được điền sẵn:

Biến Loại Quyền Mô tả
ratelimit.policy_name.failed Boolean Chỉ có thể đọc Cho biết chính sách có thất bại hay không (true hoặc false).

Để biết thêm thông tin, hãy xem phần Tài liệu tham khảo về các biến trong luồng.

Tham chiếu lỗi

Phần này mô tả các mã lỗi và thông báo lỗi được trả về cũng như các biến lỗi do Edge đặt khi chính sách này kích hoạt lỗi. Thông tin này rất quan trọng nếu bạn đang phát triển các quy tắc lỗi để xử lý lỗi. Để tìm hiểu thêm, hãy xem Những điều bạn cần biết về lỗi chính sáchXử lý lỗi.

Lỗi thời gian chạy

Những lỗi này có thể xảy ra khi chính sách này thực thi.

Mã lỗi Trạng thái HTTP Nguyên nhân Khắc phục
policies.ratelimit.FailedToResolveSpikeArrestRate 500 Lỗi này xảy ra nếu tham chiếu đến biến chứa chế độ cài đặt mức giá trong phần tử <Rate> không thể được giải quyết thành một giá trị trong Spike Arrest . Phần tử này là bắt buộc và dùng để chỉ định tỷ lệ ngăn chặn tăng đột biến ở dưới dạng intpm hoặc intps.
policies.ratelimit.InvalidMessageWeight 500 Lỗi này xảy ra nếu giá trị được chỉ định cho phần tử <MessageWeight> thông qua biến luồng không hợp lệ (giá trị không phải là số nguyên).
policies.ratelimit.SpikeArrestViolation 429

Đã vượt quá giới hạn tốc độ.

Lỗi triển khai

Những lỗi này có thể xảy ra khi bạn triển khai proxy có chứa chính sách này.

Tên lỗi Nguyên nhân Khắc phục
InvalidAllowedRate Nếu tỷ lệ bắt giữ tăng đột biến được chỉ định trong phần tử <Rate> của báo cáo Mức độ bắt giữ tăng đột biến Chính sách không phải là số nguyên hoặc nếu giá phòng không có hậu tố ps hoặc pm, thì việc triển khai proxy API không thành công.

Biến lỗi

Các biến này được đặt khi xảy ra lỗi thời gian chạy. Để biết thêm thông tin, hãy xem bài viết Những điều bạn cần biết về lỗi chính sách.

Biến Trong đó Ví dụ:
fault.name="fault_name" fault_name là tên lỗi, như đã nêu trong Bảng Lỗi thời gian chạy ở trên. Tên lỗi là phần cuối cùng mã lỗi. fault.name Matches "SpikeArrestViolation"
ratelimit.policy_name.failed policy_name là tên do người dùng chỉ định của chính sách gây ra lỗi. ratelimit.SA-SpikeArrestPolicy.failed = true

Ví dụ về phản hồi khi gặp lỗi

Dưới đây là ví dụ về phản hồi lỗi:

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

Ví dụ về quy tắc lỗi

Dưới đây là ví dụ về quy tắc lỗi để xử lý lỗi 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>

Mã trạng thái HTTP hiện tại khi vượt quá hạn mức do chính sách Hạn mức hoặc Chặn đột biến đặt ra là 429 (Quá nhiều yêu cầu). Để thay đổi mã trạng thái HTTP thành 500 (Lỗi máy chủ nội bộ), hãy đặt thuộc tính features.isHTTPStatusTooManyRequestEnabled thành false bằng API Cập nhật thuộc tính của tổ chức.

Ví dụ:

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

Giản đồ

Mỗi loại chính sách được xác định bằng một lược đồ XML (.xsd). Để tham khảo, bạn có thể xem lược đồ chính sách trên GitHub.

Chủ đề có liên quan