ขีดจำกัดการใช้งาน

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

การแจ้งเตือนที่ส่งไปยังที่อยู่ที่ระบุไว้ขณะเปิดช่องทางการแจ้งเตือนจะไม่นับรวมในขีดจำกัดโควต้า แต่การเรียกใช้เมธอด changes.watch, channels.stop และ files.watch จะนับรวมในโควต้าของคุณ

หากใช้เกินโควต้า คุณจะได้รับการตอบกลับจากรหัสสถานะ HTTP 403: User rate limit exceeded การตรวจสอบขีดจำกัดอัตราเพิ่มเติมในแบ็กเอนด์ของไดรฟ์อาจสร้างการตอบสนอง 429: Too many requests ด้วย หากเกิดกรณีนี้ คุณควรใช้อัลกอริทึม Backoff แบบเอ็กซ์โปเนนเชียล แล้วลองอีกครั้งในภายหลัง เราไม่จำกัดจำนวนครั้งในการส่งคำขอต่อวันตราบใดที่คุณใช้งานโควต้าต่อนาทีด้านล่าง

ตารางต่อไปนี้แสดงรายละเอียดของขีดจำกัดของการค้นหา

โควต้า
การค้นหา
ต่อ 60 วินาที 12,000 ราย
ต่อ 60 วินาทีต่อผู้ใช้ 12,000 ราย

แก้ไขข้อผิดพลาดด้านโควต้าตามเวลา

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

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

ตัวอย่างอัลกอริทึม

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

  1. ส่งคำขอไปยัง Google Drive API
  2. หากคำขอล้มเหลว โปรดรอ 1 + random_number_milliseconds แล้วลองส่งคำขออีกครั้ง
  3. หากคำขอล้มเหลว โปรดรอ 2 + random_number_milliseconds แล้วลองส่งคำขออีกครั้ง
  4. หากคำขอล้มเหลว โปรดรอ 4 + random_number_milliseconds แล้วลองส่งคำขออีกครั้ง
  5. และอื่นๆ ไม่เกิน maximum_backoff ครั้ง
  6. รอต่อไปและพยายามลองใหม่ให้ครบจำนวนครั้งสูงสุดที่กำหนด แต่อย่าเพิ่มระยะเวลารอระหว่างที่รอ

ที่ไหน

  • เวลารอคือ min(((2^n)+random_number_milliseconds), maximum_backoff) โดย n เพิ่มขึ้น 1 สำหรับการทำซ้ำแต่ละครั้ง (คำขอ)
  • random_number_milliseconds เป็นจำนวนมิลลิวินาทีแบบสุ่มซึ่งน้อยกว่าหรือเท่ากับ 1,000 วิธีนี้จะช่วยป้องกันไม่ให้เกิดกรณีที่ไคลเอ็นต์จำนวนมากซิงค์ข้อมูลกันตามสถานการณ์บางอย่างและจะพยายามอีกครั้งพร้อมกันโดยส่งคำขอแบบระลอกคลื่นที่ซิงค์กัน ระบบจะคำนวณค่าของ random_number_milliseconds ใหม่หลังจากคำขอลองอีกครั้งแต่ละครั้ง
  • maximum_backoff โดยทั่วไปจะมีระยะเวลา 32 หรือ 64 วินาที ค่าที่เหมาะสมจะขึ้นอยู่กับกรณีการใช้งาน

ไคลเอ็นต์จะลองอีกครั้งได้หลังจากครบ maximum_backoff ครั้งแล้ว ลองอีกครั้งหลังจากจุดนี้ไม่จำเป็นต้องเพิ่มเวลา Backoff อีก ตัวอย่างเช่น หากไคลเอ็นต์ใช้เวลา maximum_backoff ที่ 64 วินาที หลังจากถึงค่านี้ ลูกค้าจะลองซ้ำได้ทุกๆ 64 วินาที ในบางสถานการณ์ ควรป้องกันไม่ให้ไคลเอ็นต์ลองอีกครั้งอย่างไม่มีกำหนด

เวลารอระหว่างการลองใหม่และจำนวนการทดลองซ้ำจะขึ้นอยู่กับกรณีการใช้งานและเงื่อนไขของเครือข่าย

การกำหนดราคา

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

ขอเพิ่มโควต้า

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

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

ดูข้อมูลเพิ่มเติมได้ในแหล่งข้อมูลต่อไปนี้