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

นโยบายการหยุดการเพิ่มขึ้นอย่างฉับพลันจะป้องกันการเข้าชมที่เพิ่มขึ้นอย่างฉับพลันด้วยองค์ประกอบ <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 |
ไม่มีข้อมูล | จำเป็น |
ชื่อภายในของนโยบาย ค่าของแอตทริบิวต์ ใช้องค์ประกอบ |
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 หากคุณกำหนดทั้ง เช่น <Rate ref="request.header.custom_rate">1pm</Rate> ในตัวอย่างนี้ หากไคลเอ็นต์ไม่ส่งส่วนหัว "custom_rate" อัตราของพร็อกซี API สำหรับทุกไคลเอ็นต์จะเป็น 1 คำขอต่อนาที หากไคลเอ็นต์ส่งส่วนหัว "custom_rate" ขีดจำกัดอัตราจะกลายเป็น 10 คำขอต่อวินาทีสำหรับไคลเอ็นต์ทั้งหมดในพร็อกซี จนกว่าจะมีการส่งคำขอที่ไม่มีส่วนหัว "custom_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 |
build |
policies.ratelimit.InvalidMessageWeight |
500 |
ข้อผิดพลาดนี้เกิดขึ้นหากค่าที่ระบุสำหรับองค์ประกอบ <MessageWeight> ถึง
ตัวแปรโฟลว์ไม่ถูกต้อง (ค่าที่ไม่ใช่จำนวนเต็ม) |
build |
policies.ratelimit.SpikeArrestViolation |
429 |
เกินขีดจำกัดของอัตรา |
ข้อผิดพลาดในการทำให้ใช้งานได้
ข้อผิดพลาดเหล่านี้อาจเกิดขึ้นเมื่อคุณใช้พร็อกซีที่มีนโยบายนี้
ชื่อข้อผิดพลาด | สาเหตุ | แก้ไข |
---|---|---|
InvalidAllowedRate |
หากอัตราการจับกุมที่เพิ่มขึ้นอย่างฉับพลันที่ระบุไว้ในองค์ประกอบ <Rate> ของการจับกุม Spike
นโยบายไม่ใช่จำนวนเต็มหรือหากราคาไม่มี ps หรือ pm เป็นคำต่อท้าย
การทำให้พร็อกซี API ใช้งานได้ล้มเหลว |
build |
ตัวแปรความผิดพลาด
ระบบจะตั้งค่าตัวแปรเหล่านี้เมื่อเกิดข้อผิดพลาดรันไทม์ โปรดดูข้อมูลเพิ่มเติมที่หัวข้อสิ่งที่คุณจำเป็นต้องทราบ เกี่ยวกับข้อผิดพลาดของนโยบาย
ตัวแปร | สถานที่ | ตัวอย่าง |
---|---|---|
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
หัวข้อที่เกี่ยวข้อง
- นโยบายโควต้า: นโยบายโควต้าเพื่อจำกัดการเข้าชมในไคลเอ็นต์แต่ละราย
- การจำกัดอัตราสําหรับภาพรวมการจำกัดอัตรา
- การเปรียบเทียบนโยบายโควต้าและ SpikeArrest
- ตัวอย่างพร็อกซี API ที่ใช้งานได้