คุณกำลังดูเอกสารประกอบของ 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>
อัตราที่มีผลคือ 300pm ซึ่งหมายความว่าระบบจะเพิ่มโทเค็นใหม่ลงในที่เก็บทุกๆ 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
เมื่อไม่ได้ระบุองค์ประกอบในนโยบาย Spike Arrest
ค่าเริ่มต้น | เท็จ |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | บูลีน |
องค์ประกอบหลัก |
<SpikeArrest>
|
องค์ประกอบย่อย | ไม่มี |
ตารางต่อไปนี้จะอธิบายแอตทริบิวต์ขององค์ประกอบ <UseEffectiveCount>
แอตทริบิวต์ | คำอธิบาย | ค่าเริ่มต้น | การมีบุคคลอยู่ |
---|---|---|---|
ref |
ระบุตัวแปรที่มีค่าของ <UseEffectiveCount> ซึ่งอาจเป็น
ตัวแปรโฟลว์ใดก็ได้ เช่น พารามิเตอร์การค้นหา HTTP, ส่วนหัว หรือเนื้อหาของเนื้อความข้อความ ดูข้อมูลเพิ่มเติมได้ที่ข้อมูลอ้างอิงตัวแปรโฟลว์ นอกจากนี้ คุณยังตั้งค่าตัวแปรที่กำหนดเองได้
โดยใช้นโยบาย JavaScript หรือนโยบาย AssignMessage |
ไม่มี | ไม่บังคับ |
ผลของ <UseEffectiveCount>
จะขึ้นอยู่กับค่าของตัวแปรดังกล่าว ดังนี้
true
: ขีดจำกัดอัตราการเพิ่มขึ้นของ MP คือ<Rate>
หารด้วยจำนวน MP ปัจจุบันในพ็อดเดียวกัน ขีดจำกัดรวมคือค่าของ<Rate>
เมื่อเพิ่ม (หรือนำออก) MP แบบไดนามิก ขีดจำกัดอัตราการเพิ่มขึ้น ของแต่ละรายการจะเพิ่มขึ้น (หรือลดลง) แต่ขีดจำกัดรวมจะยังคงเท่าเดิมfalse
: ขีดจํากัดอัตราการเพิ่มขึ้นของ MP แต่ละรายการคือ ค่าของ<Rate>
ขีดจํากัดรวมคือผลรวมของอัตราการใช้บริการของ MP ทั้งหมด เมื่อเพิ่ม (หรือนำออก) MP ขีดจำกัดอัตราการเพิ่มขึ้นของแต่ละรายการจะยังคงเหมือนเดิม แต่ขีดจำกัดรวมจะเพิ่มขึ้น (หรือ ลดลง)
นโยบาย SpikeArrest ใช้อัลกอริทึม "ถังโทเค็น" ที่ช่วยลดการเพิ่มขึ้นของการเข้าชมอย่างรวดเร็วด้วยการแบ่งโควต้ารับส่งที่คุณระบุออกเป็นช่วงเวลาที่เล็กลง ข้อเสียของแนวทางนี้คือคำขอที่ถูกต้องหลายรายการซึ่งเข้ามาในช่วงเวลาสั้นๆ อาจถูกปฏิเสธ
เช่น สมมติว่าคุณป้อนอัตรา 30pm (คำขอ 30 รายการต่อนาที) ในการทดสอบ คุณอาจคิดว่าส่งคำขอ 30 รายการได้ใน 1 วินาที ตราบใดที่คำขอเหล่านั้นส่งภายใน 1 นาที แต่ไม่ใช่ วิธีที่นโยบายบังคับใช้การตั้งค่า หากลองพิจารณาดูแล้ว คำขอ 30 รายการภายในระยะเวลา 1 วินาที อาจถือเป็นช่วงที่มีการใช้งานสูงเล็กๆ ในบางสภาพแวดล้อม
- อัตราต่อนาทีจะได้รับการปรับให้เป็นคำขอแบบเต็มที่อนุญาตในช่วงเวลา
วินาที
เช่น 30pm จะได้รับการปรับให้ราบรื่นดังนี้
60 วินาที (1 นาที) / 30pm = ช่วงเวลา 2 วินาที หรืออนุญาตให้ส่งคำขอ 1 รายการทุกๆ 2 วินาที คำขอที่ 2 ภายใน 2 วินาทีจะล้มเหลว นอกจากนี้ คำขอที่ 31 ภายใน 1 นาทีจะ ล้มเหลว - อัตราต่อวินาทีจะได้รับการปรับให้เป็นคำขอแบบเต็มที่อนุญาตในช่วงเวลา
มิลลิวินาที
เช่น 10ps จะได้รับการปรับให้ราบรื่นดังนี้
1,000 มิลลิวินาที (1 วินาที) / 10ps = ช่วงเวลา 100 มิลลิวินาที หรืออนุญาตคำขอ 1 รายการทุกๆ 100 มิลลิวินาที คำขอที่ 2 ที่ส่งภายใน 100 มิลลิวินาทีจะล้มเหลว นอกจากนี้ คำขอที่ 11 ภายใน 1 วินาที จะดำเนินการไม่สำเร็จ
ตารางต่อไปนี้แสดงผลของ <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
ตัวแปรโฟลว์
เมื่อนโยบายการควบคุมอัตราการเข้าชมที่เพิ่มขึ้นทำงาน ระบบจะป้อนค่าตัวแปรโฟลว์ต่อไปนี้
ตัวแปร | ประเภท | สิทธิ์ | คำอธิบาย |
---|---|---|---|
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 ที่ใช้งานได้