นโยบาย SpikeArrest

คุณกําลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ Apigee X
info

ไอคอนการหยุดการเพิ่มขึ้นจาก UI ของ Edge

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

องค์ประกอบ <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>

นโยบายเริ่มต้น

ตัวอย่างต่อไปนี้แสดงการตั้งค่าเริ่มต้นเมื่อคุณเพิ่มนโยบายการหยุดการเพิ่มขึ้นอย่างฉับพลันลงในโฟลว์ใน UI ของ 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 ไม่มีข้อมูล จำเป็น

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

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

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

ตัวอย่าง

ตัวอย่างต่อไปนี้แสดงวิธีใช้นโยบายการหยุดการเพิ่มขึ้นอย่างฉับพลัน

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

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

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

นโยบายจะปรับอัตราการส่งคำขอให้สม่ำเสมอเป็น 1 คำขอต่อทุกๆ 200 มิลลิวินาที (1000/5)

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

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

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

อัตราการใช้จริงคือ 300 มิลลิวินาที ซึ่งหมายความว่าระบบจะเพิ่มโทเค็นใหม่ลงในที่เก็บข้อมูลทุก 200 มิลลิวินาที ระบบจะกําหนดค่าขนาดที่เก็บข้อมูลเป็น 10% ของ messagesPerPeriod เสมอ ดังนั้น เมื่อ messagesPerPeriod = 300 ขนาดที่เก็บข้อมูลจะเป็น 30 โทเค็น

ตัวอย่างที่ 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 ของนโยบาย
ประเภท สตริง
องค์ประกอบหลัก <PolicyElement>
องค์ประกอบย่อย ไม่มี

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

ไวยากรณ์

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

ตัวอย่าง

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

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

<Identifier>

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

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

หากคุณปล่อยองค์ประกอบ <Identifier> ว่างไว้ ระบบจะใช้ขีดจํากัดอัตรา 1 รายการสําหรับคําขอทั้งหมดที่ส่งไปยังพร็อกซี 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>

นโยบายจะปรับอัตราการส่งคำขอให้สม่ำเสมอเป็น 1 คำขอต่อทุกๆ 200 มิลลิวินาที (1000/5)

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

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

<SpikeArrest async="false" continueOnError="false" enabled="true" name="SpikeArreast">
  <DisplayName>SpikeArreast</DisplayName>
  <Rate>300pm</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> และลูกค้าไม่ได้ส่งค่า นโยบายการหยุดการเพิ่มขึ้นอย่างฉับพลันจะแสดงข้อผิดพลาด

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

<UseEffectiveCount>

กระจายจํานวนการหยุดการเพิ่มขึ้นของข้อความไปยังโปรแกรมประมวลผลข้อความ (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 เมื่อไม่มีองค์ประกอบนี้ในนโยบายการหยุดการเพิ่มขึ้นอย่างฉับพลัน

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

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

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

ผลของ <UseEffectiveCount> จะขึ้นอยู่กับค่าของ <UseEffectiveCount> ดังนี้

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

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

ค่าของ <UseEffectiveCount>
false false false true true true
จำนวน MP 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

ตัวแปรของโฟลว์

เมื่อนโยบายการหยุดการเพิ่มขึ้นอย่างฉับพลันทำงาน ระบบจะป้อนข้อมูลตัวแปรการเรียกใช้ต่อไปนี้

ตัวแปร ประเภท สิทธิ์ คำอธิบาย
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

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