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

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

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

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

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

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

ดูแผนภูมิสำหรับกิจกรรมการจำกัดอัตราของแอพได้บนแดชบอร์ดของแอพของคุณ

ขีดจำกัด

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

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

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

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

คำเตือน:

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

ข้อแนะนำ

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

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

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

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

หากแอพของคุณกำลังทำการเรียกที่เพียงพอที่จะให้ระบบของเราพิจารณาการจำกัดอัตรา เราจะส่งกลับส่วนหัว 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 ผ่านแอพดังกล่าว ในกรณีนี้ คุณควรลดการเรียกลงหรือกระจายการเรียกให้สม่ำเสมอขึ้น

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

เราพิจารณาอะไรจากการเรียก 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

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

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

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