นโยบาย SpikeArrest

คุณกำลังดูเอกสารประกอบ Apigee Edge
ไปที่ เอกสารประกอบเกี่ยวกับ Apigee X.
ข้อมูล

ไอคอน Spike Arrest จาก Edge UI

นโยบาย Spike Arrest จะป้องกันการรับส่งข้อมูลที่เพิ่มขึ้นอย่างรวดเร็วด้วยองค์ประกอบ <Rate> ช่วงเวลานี้ จะจำกัดจำนวนคำขอที่พร็อกซี API ประมวลผลและส่งไปยังแบ็กเอนด์ เพื่อป้องกันความล่าช้าของประสิทธิภาพการทำงานและช่วงพัก

องค์ประกอบ <SpikeArrest>

กำหนดนโยบาย Spike Arrest

ค่าเริ่มต้น ดูแท็บนโยบายเริ่มต้นด้านล่าง
ต้องระบุหรือไม่ ไม่บังคับ
ประเภท ซับซ้อน ออบเจ็กต์
องค์ประกอบระดับบนสุด ไม่มี
องค์ประกอบย่อย <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 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>true</UseEffectiveCount>
</SpikeArrest>

องค์ประกอบนี้มีแอตทริบิวต์ต่อไปนี้ซึ่งมักใช้กับนโยบายทั้งหมด

แอตทริบิวต์ ค่าเริ่มต้น จําเป็นไหม คำอธิบาย
name ไม่มีข้อมูล จำเป็น

ชื่อภายในของนโยบาย ค่าของแอตทริบิวต์ name มีตัวอักษร ตัวเลข ช่องว่าง ขีดกลาง ขีดล่าง และจุดได้ ค่านี้ต้องมีความยาวไม่เกิน 255 อักขระ

ใช้องค์ประกอบ <DisplayName> เพื่อติดป้ายกํากับนโยบายในตัวแก้ไขพร็อกซี UI การจัดการด้วยชื่อภาษาอื่นที่เป็นธรรมชาติได้

continueOnError เท็จ ไม่บังคับ ตั้งค่าเป็น "false" เพื่อแสดงข้อผิดพลาดเมื่อนโยบายล้มเหลว ซึ่งเป็นลักษณะการทํางานที่คาดหวังตามนโยบายส่วนใหญ่ ตั้งค่าเป็น "จริง" เพื่อดําเนินการโฟลว์ข้อมูลต่อไป แม้ว่านโยบายจะล้มเหลวก็ตาม
enabled จริง ไม่บังคับ ตั้งค่าเป็น "true" เพื่อบังคับใช้นโยบาย ตั้งค่าเป็น "false" เพื่อ "ปิด" นโยบาย ระบบจะไม่บังคับใช้นโยบายแม้ว่าจะยังคงแนบไปกับโฟลว์
async   เท็จ เลิกใช้ แอตทริบิวต์นี้เลิกใช้งานแล้ว

ตัวอย่าง

ตัวอย่างต่อไปนี้แสดงวิธีการใช้นโยบาย Spike Arrest บางส่วน

ตัวอย่างที่ 1

ตัวอย่างต่อไปนี้กำหนดอัตราเป็น 5 ต่อวินาที

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

นโยบายนี้ปรับอัตราให้เป็นคำขอเดียวซึ่งอนุญาตทุก 200 มิลลิวินาที (1000/5)

ตัวอย่างที่ 2

ตัวอย่างต่อไปนี้กำหนดอัตราเป็น 12 ต่อนาที

<SpikeArrest name="Spike-Arrest-1">
  <Rate>12pm</Rate>
</SpikeArrest>

นโยบายตัวอย่างนี้ปรับอัตราคำขอให้เป็น 1 คำขอที่อนุญาตทุกๆ 5 วินาที (60/12)

ตัวอย่างที่ 3

ตัวอย่างต่อไปนี้จำกัดคำขอไว้ที่ 12 รายการต่อนาที (อนุญาตคำขอ 1 รายการทุกๆ 5 รายการ วินาที หรือ 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 เพื่อติดป้ายกำกับนโยบายใน เครื่องมือแก้ไขพร็อกซี UI การจัดการด้วยชื่อที่ฟังดูเป็นธรรมชาติมากขึ้น

องค์ประกอบ <DisplayName> มีอยู่ในนโยบายทั้งหมด

ค่าเริ่มต้น ไม่มี
ต้องระบุหรือไม่ ไม่บังคับ หากคุณไม่ใส่ <DisplayName> ค่าของแอตทริบิวต์ ใช้แอตทริบิวต์ name ของนโยบาย
ประเภท สตริง
องค์ประกอบระดับบนสุด &lt;PolicyElement&gt;
องค์ประกอบย่อย ไม่มี

องค์ประกอบ <DisplayName> ใช้ไวยากรณ์ต่อไปนี้

ไวยากรณ์

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

ตัวอย่าง

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

องค์ประกอบ <DisplayName> ไม่มีแอตทริบิวต์หรือองค์ประกอบย่อย

<Identifier>

ให้คุณเลือกวิธีจัดกลุ่มคำขอเพื่อให้ใช้นโยบาย Spike Arrest ได้โดยอิงตาม ไคลเอ็นต์ ตัวอย่างเช่น คุณสามารถจัดกลุ่มคำขอตามรหัสนักพัฒนาซอฟต์แวร์ ซึ่งในกรณีนี้คำขอแต่ละรายการ คำขอของนักพัฒนาซอฟต์แวร์จะนับรวมอยู่ในอัตราการจับกุมของตนเองเท่านั้น ไม่ใช่คำขอทั้งหมดที่ส่งไปยัง พร็อกซี

ใช้ร่วมกับองค์ประกอบ <MessageWeight> เพื่อข้อมูลที่ละเอียดยิ่งขึ้น การควบคุมการควบคุมคำขอ

หากปล่อยองค์ประกอบ <Identifier> ว่างไว้ ระบบจะบังคับใช้ขีดจำกัดอัตราคำขอเดียวสำหรับคำขอทั้งหมด ลงในพร็อกซี API นั้น

ค่าเริ่มต้น ไม่มี
ต้องระบุหรือไม่ ไม่บังคับ
ประเภท สตริง
องค์ประกอบระดับบนสุด <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 ระบุตัวแปรที่ Spike Arrest จัดกลุ่มคำขอที่เข้ามาใหม่ คุณสามารถใช้ตัวแปรโฟลว์เพื่อระบุไคลเอ็นต์ที่ไม่ซ้ำกัน เช่น ตัวแปรที่ใช้ได้กับพารามิเตอร์ นโยบาย VerifyAPIKey นอกจากนี้ คุณยังตั้งค่าตัวแปรที่กำหนดเองได้โดยใช้ นโยบาย JavaScript หรือนโยบาย AssignMessage ไม่มี ต้องระบุ

นอกจากนี้ ระบบยังกล่าวถึงองค์ประกอบนี้ในโพสต์ชุมชน Apigee ด้วย http://community.apigee.com/questions/2807/how-does-the-edge-quota-policy-work-when-no-identi.html อีกด้วย

<MessageWeight>

ระบุการถ่วงน้ำหนักที่กำหนดไว้สำหรับแต่ละข้อความ น้ำหนักข้อความจะช่วยแก้ไขผลกระทบ ของคำขอเดียวสำหรับการคำนวณอัตราการจับกุม น้ำหนักข้อความอาจเป็นค่าใดก็ได้ ตัวแปรโฟลว์ เช่น ส่วนหัว HTTP, พารามิเตอร์การค้นหา, พารามิเตอร์แบบฟอร์ม หรือเนื้อหาข้อความ คุณยังใช้ตัวแปรที่กำหนดเองได้โดยใช้นโยบาย JavaScript หรือ นโยบาย AssignMessage

ใช้ร่วมกับ <Identifier> เพื่อควบคุมคำขอเพิ่มเติมโดย ไคลเอ็นต์หรือแอปที่เจาะจง

ตัวอย่างเช่น หากเหตุการณ์การก่อตัวเพิ่มขึ้นอย่างรวดเร็ว <Rate> คือ 10pm และแอปส่ง คำขอที่มีน้ำหนัก 2 จะสามารถมี 5 ข้อความต่อนาทีจาก เนื่องจากคำขอแต่ละรายการนับเป็น 2

ค่าเริ่มต้น ไม่มี
ต้องระบุหรือไม่ ไม่บังคับ
ประเภท จำนวนเต็ม
องค์ประกอบระดับบนสุด <SpikeArrest>
องค์ประกอบย่อย ไม่มี

ไวยากรณ์

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

ตัวอย่างที่ 1

ตัวอย่างต่อไปนี้จำกัดคำขอไว้ที่ 12 รายการต่อนาที (อนุญาตคำขอ 1 รายการทุกๆ 5 รายการ วินาที หรือ 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 ระบุตัวแปรโฟลว์ที่มีน้ำหนักข้อความสำหรับไคลเอ็นต์ที่เจาะจง ซึ่งอาจเป็นตัวแปรโฟลว์ เช่น เป็นพารามิเตอร์การค้นหา HTTP ส่วนหัว หรือเนื้อหาข้อความ สำหรับข้อมูลเพิ่มเติม โปรดดู การอ้างอิงตัวแปรโฟลว์ นอกจากนี้ คุณยังสามารถตั้งค่าตัวแปรที่กำหนดเอง โดยใช้นโยบาย 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 ต้องเป็นจำนวนเต็มบวกที่ไม่ใช่ 0

ตัวอย่างที่ 1

ตัวอย่างต่อไปนี้กำหนดอัตราเป็น 5 คำขอต่อวินาที

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

นโยบายนี้ปรับอัตราให้เป็นคำขอเดียวซึ่งอนุญาตทุก 200 มิลลิวินาที (1000/5)

ตัวอย่างที่ 2

ตัวอย่างต่อไปนี้กำหนดอัตราเป็น 12 คำขอต่อนาที

<SpikeArrest name="Spike-Arrest-1">
  <Rate>12pm</Rate>
</SpikeArrest>

นโยบายตัวอย่างนี้ปรับอัตราคำขอให้เป็น 1 คำขอที่อนุญาตทุกๆ 5 วินาที (60/12)

ตารางต่อไปนี้อธิบายแอตทริบิวต์ของ <Rate>

แอตทริบิวต์ คำอธิบาย การมีบุคคลอยู่ ค่าเริ่มต้น
ref ระบุตัวแปรโฟลว์ที่ระบุอัตรา ซึ่งอาจเป็นขั้นตอนใดก็ได้ เช่น พารามิเตอร์การค้นหา HTTP, ส่วนหัว หรือเนื้อหาข้อความ หรือค่า เช่น KVM ดูข้อมูลเพิ่มเติมได้ที่ข้อมูลอ้างอิงตัวแปรโฟลว์

คุณยังใช้ตัวแปรที่กำหนดเองได้ด้วย โดยใช้นโยบาย JavaScript หรือนโยบาย AssignMessage

หากคุณกำหนดทั้ง ref และส่วนเนื้อหาขององค์ประกอบนี้ ระบบจะใช้ค่า ref และจะมีความสำคัญเหนือกว่าเมื่อตัวแปรโฟลว์คือ ที่ตั้งไว้ในคำขอ (ส่วนตรงข้ามจะเป็นจริงเมื่อตัวแปรที่ระบุใน ref ไม่ได้กำหนดไว้ในคำขอ)

เช่น

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

ในตัวอย่างนี้ หากลูกค้าไม่ส่ง "custom_rate" แล้วตามด้วย อัตราสำหรับพร็อกซี API คือ 1 คำขอต่อนาทีสำหรับไคลเอ็นต์ทั้งหมด หากลูกค้าสอบผ่าน "อัตราที่กำหนดเอง [custom_rate]" ขีดจำกัดอัตราคำขอจะกลายเป็น 10 คำขอต่อวินาทีสำหรับลูกค้าทั้งหมดใน พร็อกซี — จนถึงคำขอที่ไม่มี "custom_rate" ส่งส่วนหัวแล้ว

คุณสามารถใช้ <Identifier> ในการจัดกลุ่มคำขอเพื่อบังคับใช้อัตราที่กำหนดเองสำหรับ ประเภทต่างๆ

หากคุณระบุค่าสำหรับ ref แต่ไม่ได้ตั้งค่าอัตราในส่วนเนื้อหาของ องค์ประกอบ <Rate> และไคลเอ็นต์ไม่ได้ส่งค่า นโยบาย Spike Arrest เกิดข้อผิดพลาด

ไม่บังคับ ไม่มี

<UseEffectiveCount>

กระจายจำนวน Spike Arrest ใน Message Processor (MP) เมื่อใช้การปรับขนาดอัตโนมัติ กลุ่ม

ไวยากรณ์

<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 เมื่อละเว้นองค์ประกอบจากนโยบาย Spike Arrest

ค่าเริ่มต้น เท็จ
ต้องระบุหรือไม่ ไม่บังคับ
ประเภท บูลีน
องค์ประกอบระดับบนสุด <SpikeArrest>
องค์ประกอบย่อย ไม่มี

ตารางต่อไปนี้อธิบายแอตทริบิวต์ขององค์ประกอบ <UseEffectiveCount>

แอตทริบิวต์ คำอธิบาย ค่าเริ่มต้น การมีบุคคลอยู่
ref ระบุตัวแปรที่มีค่าเป็น <UseEffectiveCount> ประเภท ตัวแปรโฟลว์ เช่น พารามิเตอร์การค้นหา HTTP ส่วนหัว หรือเนื้อหาข้อความ สำหรับข้อมูลเพิ่มเติม โปรดดูการอ้างอิงตัวแปรโฟลว์ นอกจากนี้ คุณยังสามารถตั้งค่าตัวแปรที่กำหนดเอง โดยใช้นโยบาย JavaScript หรือนโยบาย AssignMessage ไม่มี ไม่บังคับ

ผลกระทบของ <UseEffectiveCount> ขึ้นอยู่กับค่า:

  • true: ขีดจำกัดอัตราการเพิ่มขึ้นอย่างฉับพลันของ MP คือ <Rate> หารด้วยจำนวน MP ปัจจุบันในพ็อดเดียวกัน ขีดจำกัดรวมคือค่า จาก <Rate> เมื่อมีการเพิ่ม (หรือนำ MP) ออกแบบไดนามิก ขีดจํากัดของอัตราจะเพิ่มขึ้น (หรือลดลง) แต่ขีดจำกัดรวมจะยังคงเหมือนเดิม
  • false (นี่คือค่าเริ่มต้นหากละไว้): ขีดจำกัดอัตราการเพิ่มขึ้นของ MP แต่ละรายการคือ เพียงค่าของ <Rate> ขีดจำกัดรวมคือผลรวมของอัตรา ส.ส. ทั้งหมด เมื่อเพิ่ม ส.ส. (หรือนำออก) ขีดจำกัดอัตราการเพิ่มขึ้นอย่างฉับพลันของแต่ละคนจะยังคงเหมือนเดิม แต่ขีดจำกัดรวมจะเพิ่มขึ้น (หรือ ลดลง)

ตารางต่อไปนี้แสดงผลกระทบของ <UseEffectiveCount> ที่มีต่อขีดจำกัดอัตราที่มีผลของ แต่ละ MP:

ค่าของ <UseEffectiveCount>
false false false true true true
# ส.ส. 8 4 2 8 4 2
ค่าของ <Rate> 10 10 10 40 40 40
อัตราที่มีผลต่อ MP 10 10 10 5 10 20
ขีดจำกัดรวม 80 40 20 40* 40* 40*
* เหมือนกับ <Rate>

ในตัวอย่างนี้ คุณจะสังเกตว่าเมื่อจำนวน MP ลดลงจาก 4 เป็น 2 และ <UseEffectiveCount> เท่ากับ false อัตราที่มีผลต่อ MP จะยังคงเท่าเดิม (ที่ 10) แต่เมื่อ <UseEffectiveCount> เท่ากับ true อัตราที่มีผลต่อ MP จะลดลงจาก 10 ถึง 20 เมื่อจำนวน MP ลดลงจาก 4 เป็น 2

ตัวแปรโฟลว์

เมื่อนโยบาย Spike Arrest ทำงาน ระบบจะเติมค่าตัวแปรของโฟลว์ต่อไปนี้

ตัวแปร ประเภท สิทธิ์ คำอธิบาย
ratelimit.policy_name.failed บูลีน อ่านอย่างเดียว ระบุว่านโยบายล้มเหลว (true หรือ false)

ดูข้อมูลเพิ่มเติมได้ที่ข้อมูลอ้างอิงตัวแปรโฟลว์

ข้อมูลอ้างอิงข้อผิดพลาด

ส่วนนี้จะอธิบายรหัสข้อผิดพลาดและข้อความแสดงข้อผิดพลาดที่ส่งกลับและตัวแปรข้อบกพร่อง ที่ Edge ตั้งค่าไว้เมื่อนโยบายนี้ทริกเกอร์ข้อผิดพลาด ข้อมูลนี้มีความสำคัญต่อการทราบว่าคุณจะสร้างกฎความผิดพลาดเพื่อ จัดการกับข้อผิดพลาด ดูข้อมูลเพิ่มเติมได้ที่ สิ่งที่จำเป็นต้องทราบ เกี่ยวกับข้อผิดพลาดของนโยบายและการจัดการ ข้อผิดพลาด

ข้อผิดพลาดเกี่ยวกับรันไทม์

ข้อผิดพลาดเหล่านี้อาจเกิดขึ้นเมื่อนโยบายทำงาน

รหัสข้อผิดพลาด สถานะ HTTP สาเหตุ แก้ไข
policies.ratelimit.FailedToResolveSpikeArrestRate 500 ข้อผิดพลาดนี้เกิดขึ้นหากมีการอ้างอิงถึงตัวแปรที่มีการตั้งค่าอัตรา ภายในองค์ประกอบ <Rate> ไม่สามารถแก้ไขเป็นค่าภายใน Spike Arrest องค์ประกอบนี้เป็นแบบบังคับและใช้เพื่อระบุอัตราการจับกุมที่เพิ่มขึ้นอย่างฉับพลันใน ในรูปแบบ intpm หรือ intps
policies.ratelimit.InvalidMessageWeight 500 ข้อผิดพลาดนี้เกิดขึ้นหากค่าที่ระบุสำหรับองค์ประกอบ <MessageWeight> ถึง ตัวแปรโฟลว์ไม่ถูกต้อง (ค่าที่ไม่ใช่จำนวนเต็ม)
policies.ratelimit.SpikeArrestViolation 429

เกินขีดจำกัดของอัตรา

ข้อผิดพลาดในการทำให้ใช้งานได้

ข้อผิดพลาดเหล่านี้อาจเกิดขึ้นเมื่อคุณใช้พร็อกซีที่มีนโยบายนี้

ชื่อข้อผิดพลาด สาเหตุ แก้ไข
InvalidAllowedRate หากอัตราการจับกุมที่เพิ่มขึ้นอย่างฉับพลันที่ระบุไว้ในองค์ประกอบ <Rate> ของการจับกุม Spike นโยบายไม่ใช่จำนวนเต็มหรือหากราคาไม่มี ps หรือ pm เป็นคำต่อท้าย การทำให้พร็อกซี API ใช้งานได้ล้มเหลว

ตัวแปรความผิดพลาด

ระบบจะตั้งค่าตัวแปรเหล่านี้เมื่อเกิดข้อผิดพลาดรันไทม์ โปรดดูข้อมูลเพิ่มเติมที่หัวข้อสิ่งที่คุณจำเป็นต้องทราบ เกี่ยวกับข้อผิดพลาดของนโยบาย

ตัวแปร สถานที่ ตัวอย่าง
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>

รหัสสถานะ HTTP ปัจจุบันสำหรับการเกินขีดจำกัดของอัตราที่กำหนดโดยนโยบายโควต้าหรือการจับจองช่วงหยุดนิ่ง คือ 429 (มีคำขอมากเกินไป) วิธีเปลี่ยนรหัสสถานะ HTTP เป็น 500 (ข้อผิดพลาดภายในเซิร์ฟเวอร์) ให้ตั้งค่า กำลังใช้พร็อพเพอร์ตี้ features.isHTTPStatusTooManyRequestEnabled กับ false อัปเดตพร็อพเพอร์ตี้องค์กร 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>"

สคีมา

นโยบายแต่ละประเภทจะกำหนดโดยสคีมา XML (.xsd) สคีมานโยบายสำหรับใช้อ้างอิง ที่มีอยู่ใน GitHub

หัวข้อที่เกี่ยวข้อง