การจำกัดอัตราใน API กราฟ

การจำกัดอัตราจะกำหนดขีดจำกัดจำนวนครั้งที่สามารถทำการเรียก API ภายในช่วงเวลาที่กำหนด กำหนดขีดจำกัดอัตราในทุกแอพ

แอพที่เกินขีดจำกัดอัตราอย่างมากหรือตลอดมาอาจไม่สามารถใช้งานได้

การจำกัดอัตราใน API กราฟของ Facebook ควรเกิดขึ้นในสถานการณ์ที่พบไม่บ่อยเท่านั้น เอกสารนี้จะอธิบายว่าการจำกัดดังกล่าวคืออะไรและมีวิธีจัดการอย่างไร

ขีดจำกัดอัตราที่แอพของคุณอาจพบมีสองประเภทหลักได้แก่ การจำกัดอัตราระดับแอพพลิเคชั่นและการจำกัดอัตราระดับเพจ

การจำกัดอัตราระดับแอพพลิเคชั่น

ขีดจำกัดนี้จะใช้กับการเรียกที่ใช้โทเค็นการเข้าถึงใดๆ ยกเว้นโทเค็นการเข้าถึงเพจ

จะมีการเรียก API ทั้งหมดจากแอพหลังจากที่ขีดจำกัดอัตราเกินและจำกัดผลลัพธ์และจะล้มเหลวพร้อมกับ error code = 4, CodedException การเรียกจะสำเร็จอีกครั้งเมื่อการใช้ในชั่วโมงที่ผ่านมาตกมาต่ำกว่าขีดจำกัด ขีดจำกัดจะถูกคำนวณบนหน้าต่างที่เปลี่ยนทุกชั่วโมง และจะสามารถพบเปอร์เซ็นต์การใช้ปัจจุบันได้บนแดชบอร์ดของแอพของคุณ

แดชบอร์ดการจำกัดอัตรา

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

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

ข้อจำกัด

จำนวนทั้งหมดของการเรียกที่แอพของคุณสามารถทำได้ต่อชั่วโมงคือ 200 เท่าของจำนวนผู้ใช้ ซึ่งไม่ใช่ขีดจำกัดต่อผู้ใช้ ผู้ใช้รายบุคคลสามารถทำการเรียกได้มากกว่า 200 ครั้งต่อชั่วโมงตราบเท่าที่จำนวนรวมสำหรับผู้ใช้ทั้งหมดไม่เกินขีดสูงสุดของแอพ ตัวอย่างเช่น ถ้าแอพของคุณมีผู้ใช้ 100 คน แอพสามารถทำการเรียกได้ 20,000 ครั้งต่อชั่วโมง แต่ผู้ใช้ที่มีส่วนร่วมมากที่สุดสิบอันดับแรกสามารถทำการเรียกได้ 19,000 ครั้ง

เมื่อแอพของคุณมีการจำกัดอัตรา การเรียกทั้งหมดของแอพจะถูกจำกัดด้วย ไม่ใช่การเรียกกับผู้ใช้ที่ระบุเท่านั้น

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

คำเตือน:

  • ไม่ใช่การเรียก API ทั้งหมดที่ขึ้นอยู่กับขีดจำกัดอัตรา ดังนั้นจำนวนการเรียกของคุณอาจไม่ตรงกับจำนวนที่คุณเห็นในเครื่องมือการจำกัดอัตรา
  • เรายังจำกัดผลลัพธ์การเรียกตามเวลา CPU ที่ใช้และเวลาโดยรวมอีกด้วย ปลายทางที่ต้องมีการประมวลผลมากอาจส่งผลให้แอพของคุณถึงขีดจำกัดแม้ว่าจะอยู่ในขีดจำกัดปริมาณการเรียก แอพจะไม่ถึงขีดจำกัดเวลา CPU และเวลาทั้งหมดบ่อยๆ ยกเว้นสำหรับปลายทางที่เฉพาะ ข้อมูลเกี่ยวกับปลายทางที่ใช้เวลา CPU และเวลาทั้งหมดจำนวนมากสามารถดูได้ในกราฟในอดีต หากมี
  • API ข้อมูลเชิงลึกของโฆษณา และ API การตลาดอาจใช้การจำกัดอัตราชุดอื่น โปรดดูเอกสารการจำกัดอัตรา API การตลาดที่ https://developers.facebook.com/docs/marketing-api/api-rate-limiting สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ API การตลาด

ข้อแนะนำ

ในการหลีกเลี่ยงการจำกัดอัตรา โปรดดำเนินการดังนี้

  • กระจายการสืบค้นข้อมูลให้เท่าๆ กันระหว่างช่วงเวลาสองช่วงเพื่อเลี่ยงการส่งข้อมูลที่มากเกินไป
  • ใช้ตัวกรองเพื่อจำกัดขนาดการตอบสนองข้อมูลและหลีกเลี่ยงการเรียกที่ขอข้อมูลที่ซ้อนทับกัน
  • ใช้ส่วนหัวการจำกัดอัตราเพื่อทำให้ปริมาณการเรียกแบบไดนามิกสมดุล

ส่วนหัวการจำกัดอัตรา

ทุกๆ การตอบสนองที่ทำให้ API กราฟจะมีหัวเรื่อง HTTP X-App-Usage ส่วนหัวนี้จะมีเปอร์เซ็นต์การใช้ของแอพของคุณในปัจจุบัน เปอร์เซ็นต์นี้จะเท่ากับการใช้ที่แสดงต่อคุณในกราฟการจำกัดอัตรา ใช้จำนวนนี้เพื่อทำให้ปริมาณการเรียกของคุณมีความสมดุลแบบไดนามิกเพื่อหลีกเลี่ยงการถูกจำกัดผลลัพธ์

ส่วนหัวการจำกัดอัตราเป็นสตริงในรูปแบบ JSON ในแบบฟอร์มต่อไปนี้

{
  "call_count"    : x, 
  "total_time"    : y, 
  "total_cputime" : z
}

ค่า x, y และ z เป็นจำนวนเต็มของค่าที่ใช้ไปสำหรับเกณฑ์ชี้วัดแต่ละรายการ เมื่อเกณฑ์ชี้วัดหนึ่งใดต่อไปนี้เกิน 100 แอพจะถูกจำกัดอัตรา

การจำกัดอัตราระดับเพจ

ขีดจำกัดเหล่านี้จะใช้กับการเรียกที่ใช้โทเค็นการเข้าถึงเพจ แอพของคุณจะได้รับรหัสข้อผิดพลาด 32 หากคุณถึงขีดจำกัดเหล่านี้

บล็อกที่ https://developers.facebook.com/blog/post/2016/06/16/page-level-rate-limits/ จะมีคำอธิบายเกี่ยวกับการจำกัดอัตราระดับเพจอย่างละเอียด

แดชบอร์ดการจำกัดอัตรา

สำหรับแต่ละเพจที่มีโทเค็นการเข้าถึงที่แอพของคุณใช้ในการเรียก คุณสามารถดูแผนภูมิโทเค็นการเข้าถึงสำหรับเพจนั้นได้

ข้อจำกัด

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

จำนวนคนที่ใช้เพจที่มีส่วนร่วมรายวันเป็นจำนวนคนที่ไม่ซ้ำกันที่ทำการโต้ตอบกับเพจในช่วง 24 ชั่วโมง การโต้ตอบกับเพจคือการคลิกบนเพจหรือเนื้อหาของเพจ

จำนวนผู้ใช้ที่มีส่วนร่วมในช่วง 24 ชั่วโมงก่อนหน้าจะนำมาใช้ในการคำนวณการจำกัดอัตราในช่วงกรอบเวลา 24 ชั่วโมงปัจจุบัน

สามารถเรียกได้ทั้งหมด 4800 ครั้งต่อผู้ใช้ที่มีส่วนร่วมรายวันในนามของเพจต่อ 24 ชั่วโมงรวมกัน ตัวอย่างเช่น หากเพจมีผู้ใช้ที่มีส่วนร่วมรายวัน 100 คน จะสามารถเรียกได้ 480,000 ครั้งในนามของเพจภายในช่วง 24 ชั่วโมง ช่วงเวลา 24 ชั่วโมงนี้เป็นหน้าต่างที่เลื่อนได้และจะมีการอัพเดตทุกๆ สองสามนาที การจำกัดการเรียกเป็นการจำกัดต่อเพจ ดังนั้นแอพหนึ่งแอพอาจมีการเรียกสัก 400,000 ครั้ง และแอพอื่นอาจทำการเรียกแค่ 80,000 ครั้งก็ได้ หากเพจถูกจำกัดอัตรา เฉพาะการเรียกจากแอพของคุณที่ใช้โทเค็นการเข้าถึงของเพจนั้นเท่านั้นที่จะถูกจำกัด นั่นหมายความว่า แอพของคุณจะยังสามารถทำงานได้ตามปกติสำหรับการเรียกอื่นๆ

จะมีการคำนวณจำนวนการเรียกไปยังเพจของคุณเป็นจำนวนการเรียกโดยประมาณโดยใช้โทเค็นการเข้าถึงต่อวันของเพจคุณ เพจที่มีจำนวนการเรียกต่อวันเยอะกว่าอาจมีการจำกัดอัตราที่แม่นยำกว่าเพจที่มีจำนวนการเรียกต่อวันน้อยกว่า เพจที่มีจำนวนการเรียกต่อวันน้อยมากอาจมีปัญหาในการจำกัดอัตรา

คำเตือน:

  • ไม่ใช่การเรียก API ทั้งหมดที่ขึ้นอยู่กับขีดจำกัดอัตรา ดังนั้นจำนวนการเรียกของคุณอาจไม่ตรงกับจำนวนที่คุณเห็นในเครื่องมือการจำกัดอัตรา
  • Facebook ยังจำกัดผลลัพธ์การเรียกตามเวลา CPU ที่ใช้และเวลาโดยรวมอีกด้วย คลิกที่กราฟในเครื่องมือการจำกัดอัตราบนแดชบอร์ดของคุณสำหรับรายละเอียด
  • API ข้อมูลเชิงลึกของโฆษณา และ API การตลาดอาจใช้การจำกัดอัตราชุดอื่น โปรดดูที่ เอกสารการจำกัดอัตรา API การตลาด สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ API การตลาด

ข้อแนะนำ

ทันทีที่มีการจำกัดผลลัพธ์เพจ ผู้เรียกจะได้รับข้อผิดพลาดสำหรับการเรียกลำดับต่อไปโดยมีerror code = 32, CodedException การตอบรับคำขอของคุณไปยังเพจนั้นอีกครั้งอาจใช้เวลาสูงสุดหนึ่งชั่วโมง

ในการหลีกเลี่ยงการจำกัดอัตรา โปรดดำเนินการดังนี้

  • กระจายการสืบค้นข้อมูลให้เท่าๆ กันระหว่างช่วงเวลาสองช่วงเพื่อเลี่ยงการส่งข้อมูลที่มากเกินไป
  • ใช้ตัวกรองเพื่อจำกัดขนาดการตอบสนองข้อมูลและหลีกเลี่ยงการเรียกที่ขอข้อมูลที่ซ้อนทับกัน
  • ใช้ส่วนหัวการจำกัดอัตราเพื่อทำให้ปริมาณการเรียกแบบไดนามิกสมดุล

ส่วนหัวการจำกัดอัตรา

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

ส่วนหัวการจำกัดอัตราเป็นสตริงในรูปแบบ JSON ในแบบฟอร์มต่อไปนี้

{
  "call_count"    : x, 
  "total_time"    : y, 
  "total_cputime" : z
}

ค่า x, y และ z เป็นจำนวนเต็มของค่าที่ใช้ไปสำหรับเกณฑ์ชี้วัดแต่ละรายการ เมื่อเกณฑ์ชี้วัดหนึ่งใดต่อไปนี้เกิน 100 แอพจะถูกจำกัดอัตรา

การจำกัดอัตราระดับบัญชีผู้ใช้

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

หมายเหตุ:

อาจรวมถึงการเรียกของผู้ใช้ผ่านแอพหลายแอพ ไม่เพียงเฉพาะแอพของคุณเท่านั้น

เมื่อจำกัดอัตราของผู้ใช้ การเรียก API จากผู้ใช้จะถูกจำกัดผลลัพธ์เช่นกัน

ในการหลีกเลี่ยงการจำกัดอัตรา โปรดดำเนินการดังนี้

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

URL รูปโปรไฟล์

URL รูปโปรไฟล์ที่คืนจาก API กราฟอาจมีการจำกัดอัตราที่ต่างกัน หากคุณถึงการจำกัดเหล่านี้แล้ว คำขอจะคืน HTTP โค้ดการตอบสนอง 429 (มีคำขอมากเกินไป) หากคุณถึงการจำกัดอัตราเสมอ

  • กระจายคำถามให้สม่ำเสมอในแต่ละช่วงเวลา
  • โหลดรูปภาพจากฝั่งไคลเอนต์แทนฝั่งเซิร์ฟเวอร์
  • หากคุณต้องการโหลดรูปภาพฝั่งเซิร์ฟเวอร์ ให้แคชภาพ

คำถามที่พบบ่อย

เราพิจารณาอะไรจากการเรียก API

จำนวนการเรียกทั้งหมดนับจากขีดจำกัดอัตราไม่ใช่เพียงคำขอ API ที่เป็น HTTPS เพียงอย่างเดียวเท่านั้น ตัวอย่างเช่น คุณสามารถสร้างการเรียก API เพียงหนึ่งครั้งและกำหนด ID หลายๆ ID แต่สำหรับแต่ละ ID จะนับเป็นการเรียก API สำหรับ ID เอง แม้ว่าคุณเพียงสร้างคำขอ API ที่เป็น HTTPS เพียงครั้งเดียวเท่านั้น

สำหรับตัวอย่างประกอบแนวคิด ดูที่ตัวอย่างด้านล่างนี้

คำขอตัวอย่าง จำนวนการเรียก API

GET https://graph.facebook.com/photos?id=4
GET https://graph.facebook.com/photos?id=5
GET https://graph.facebook.com/photos?id=6

3

GET https://graph.facebook.com/photos?id=4,5,6

3

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

คุณยังสามารถใช้ API ชุดในการรวมชุดคำขอของคุณ แต่ต้องทราบว่าแต่ละคำขอย่อยเป็นการเรียก API ของตัวเอง หรือแม้แต่การเรียก API หลายครั้งในกรณีที่มีกำหนดหลาย ID

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


แอพของฉันจะเห็นข้อผิดพลาดอะไร
ชนิดการจำกัดผลลัพธ์ อย่างน้อย รหัสข้อผิดพลาด

การจำกัดผลลัพธ์ระดับแอพพลิเคชั่น

การเรียก 200 ครั้ง/คน/ชั่วโมง

4

การจำกัดผลลัพธ์ระดับบัญชีผู้ใช้

ไม่สามารถใช้งานได้

17

การจำกัดผลลัพธ์ระดับเพจ

การเรียก 4800 ครั้ง/คน/24 ชั่วโมง

32

การจำกัดผลลัพธ์ระดับกำหนดเอง

ไม่สามารถใช้งานได้

613


ฉันควรทำอย่างไรหากฉันได้รับรหัสข้อผิดพลาด 613

หากการตอบสนองข้อผิดพลาดของคุณมี error_subcode 1996 Facebook ได้พบพฤติกรรมที่ไม่สม่ำเสมอในปริมาณคำขอ API ของแอพของคุณ หากคุณได้ทำการเปลี่ยนแปลงใดๆ ที่ส่งผลต่อจำนวนของคำขอ API เมื่อไม่นานมานี้ คุณอาจกำลังพบกับข้อผิดพลาด

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


ฉันกำลังสร้างตัวดึงแยกข้อมูล มีอะไรที่ฉันต้องกังวลอีกหรือไม่

หากคุณกำลังสร้างบริการที่มีการดึงแยกข้อมูล โปรดอ่านข้อกำหนดการดึงแยกข้อมูลของเรา