Pembatasan Laju di API Graf

Pembatasan Laju di API Graf Facebook hanya ditemui pada situasi yang langka. Dokumen ini menjelaskan apa batasan itu dan bagaimana menanganinya.

Ada dua jenis utama pembatasan laju yang dapat ditemui oleh aplikasi Anda, yaitu pembatasan laju level aplikasi dan pembatasan laju level halaman.

Pembatasan Laju Level Aplikasi

Pembatasan ini berlaku pada panggilan yang dilakukan menggunakan token akses selain token akses halaman. Aplikasi Anda akan menerima kode kesalahan 4 jika Anda mencapai batas tersebut.

Dasbor pembatasan laju

Lihat bagan untuk aktivitas pembatasan laju aplikasi Anda di dasbor aplikasi di aplikasi Anda.

Batasan

Batasan laju diberlakukan pada setiap aplikasi. Alat pembatasan laju memberi Anda informasi tentang seberapa dekat aplikasi Anda dengan kondisi macet. Klik sampel untuk mendapat penjelasan selengkapnya tentang jenis pemanfaatan.

Aplikasi Anda dapat melakukan 200 panggilan per jam per pengguna secara agregat. Sebagai contoh, jika aplikasi Anda memiliki 100 pengguna, ini artinya aplikasi Anda dapat melakukan 20.000 panggilan. Ini bukan pembatasan per pengguna, jadi satu pengguna dapat melakukan 19.000 panggilan tersebut dan pengguna lain dapat melakukan 1.000 panggilan. Pembatasan ini dihitung berdasarkan jumlah panggilan yang dilakukan di jam sebelumnya.

Saat aplikasi Anda sudah dibatasi nilainya, semua panggilan untuk aplikasi itu akan dibatasi, tidak hanya panggilan untuk pengguna tertentu.

Jumlah pengguna untuk aplikasi Anda dihitung sebagai jumlah rata-rata pengguna aktif harian ditambah masuk baru hari ini sebagai nilai yang diestimasi. Aplikasi dengan jumlah pengguna yang lebih besar memiliki batasan laju yang lebih akurat daripada aplikasi dengan jumlah pengguna yang lebih sedikit. Aplikasi dengan jumlah pengguna yang sangat kecil kemungkinan memiliki masalah dengan batasan laju.

Caveat:

  • Tidak semua panggilan API terkena pembatasan laju sehingga jumlah panggilan yang Anda lakukan mungkin tidak cocok dengan yang Anda lihat di alat pembatasan laju.
  • Facebook juga mencegah panggilan berdasarkan waktu CPU yang digunakan dan total waktu. Sulit untuk mencapai batas tersebut, jadi ini merupakan kemunculan yang sangat jarang. Informasi ini dipaparkan di panel detail untuk setiap sampel. Klik graf di alat pembatasan laju di dasbor Anda untuk keterangan selengkapnya.
  • API Wawasan Iklan dan API Marketing mungkin menggunakan set pembatasan laju yang berbeda. Baca dokumen Pembatasan Laju API Marketing di https://developers.facebook.com/docs/marketing-api/api-rate-limiting untuk informasi selengkapnya tentang API Marketing.

Rekomendasi

Pembatasan laju mendefinisikan batasan pada jumlah panggilan API yang dapat dilakukan dalam periode waktu yang ditetapkan. Jika batasan laju terlampaui, semua panggilan API dari aplikasi dicegah dan mengalami kegagalan selama periode waktu yang singkat. Jika aplikasi dicegah, pemanggil akan mendapat pesan kesalahan untuk panggilan berikutnya dengan error code = 4, CodedException. Dibutuhkan waktu hingga satu jam untuk permintaan Anda dapat diterima lagi.

Untuk menghindari pembatasan laju:

  • Sebarkan kueri secara merata di antara dua interval waktu untuk menghindari pengiriman lalu-lintas dalam kondisi spike.
  • Gunakan filter untuk membatasi ukuran tanggapan data dan menghindari panggilan yang sedang meminta data yang tumpang-tindih.
  • Gunakan header pembatasan laju untuk menyeimbangkan volume panggilan Anda secara dinamis.

Header pembatasan laju

Jika aplikasi Anda melakukan cukup panggilan sehingga layak untuk pembatasan laju oleh sistem kami, maka kami mengembalikan header HTTP X-App-Usage. Header ini berisi persentase penggunaan terkini untuk aplikasi Anda. Persentase ini setara dengan penggunaan yang ditampilkan untuk Anda di grafik pembatasan laju. Gunakan angka ini untuk menyeimbangkan beban panggilan Anda secara dinamis untuk menghindari macet.

Header pembatasan laju adalah string berformat JSON dalam bentuk berikut:

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

Nilai untuk x, y, dan z adalah bilangan bulat yang mewakili nilai yang digunakan persentase untuk setiap metrik. Saat ada metrik tersebut melampaui 100, maka aplikasi akan dibatasi nilai.

Pembatasan Laju Level Halaman

Pembatasan ini berlaku pada panggilan yang dilakukan menggunakan token akses halaman. Aplikasi Anda akan menerima kode kesalahan 32 jika Anda mencapai batas tersebut.

Kiriman blog di https://developers.facebook.com/blog/post/2016/06/16/page-level-rate-limits/ menyediakan penjelasan terperinci mengenai pembatasan laju level halaman.

Dasbor pembatasan laju

Untuk setiap halaman yang token aksesnya digunakan oleh aplikasi Anda untuk melakukan panggilan, Anda dapat melihat bagan pembatasan laju untuk halaman itu.

Batasan

Batasan laju diberlakukan pada setiap halaman, bukan aplikasi. Alat pembatasan laju akan memberi Anda informasi tentang berapa banyak aplikasi yang menggunakan token akses halaman itu dan seberapa dekat halaman tersebut dengan kondisi macet. Klik sampel untuk mendapat penjelasan selengkapnya tentang jenis pemanfaatan.

Jumlah harian orang yang berinteraksi menggunakan halaman merupakan jumlah unik orang yang telah berinteraksi dengan halaman tersebut dalam waktu 24 jam. Interaksi dengan halaman terdiri atas klik pada halaman atau konten halaman tersebut.

Jumlah pengguna yang berinteraksi waktu 24 jam sebelumnya digunakan untuk menghitung batasan laju untuk interval 24 jam saat ini.

Total 4800 panggilan per pengguna harian yang berinteraksi dapat dilakukan mewakili halaman tersebut per kumulatif 24 jam. Sebagai contohnya, jika halaman memiliki 100 pengguna harian yang berinteraksi, maka 480.000 panggilan dapat dilakukan mewakili halaman itu dalam waktu 24 jam. Periode 24 jam ini merupakan interval geser yang diperbarui setiap beberapa menit. Pembatasan panggilan adalah pembatasan per halaman, jadi satu aplikasi dapat melakukan 400.000 panggilan dan pengguna lain dapat melakukan 80.000 panggilan. Jika halaman dibatasi nilainya, hanya panggilan dari aplikasi Anda yang menggunakan token akses halaman itu yang akan dibatasi. Ini artinya aplikasi Anda masih dapat berfungsi normal untuk panggilan lainnya.

Jumlah panggilan ke halaman Anda dihitung sebagai perkiraan jumlah panggilan menggunakan token akses halaman Anda per hari. Halaman dengan jumlah panggilan yang lebih besar memiliki pembatasan laju yang lebih akurat daripada halaman dengan jumlah panggilan yang lebih sedikit per hari. Halaman dengan jumlah pengguna yang sangat kecil per hari kemungkinan memiliki masalah dengan batasan laju.

Caveat:

  • Tidak semua panggilan API terkena pembatasan laju sehingga jumlah panggilan yang Anda lakukan mungkin tidak cocok dengan yang Anda lihat di alat pembatasan laju.
  • Facebook juga mencegah panggilan berdasarkan waktu CPU yang digunakan dan total waktu. Klik graf di alat pembatasan laju di dasbor Anda untuk keterangan selengkapnya.
  • API Wawasan Iklan dan API Marketing mungkin menggunakan set pembatasan laju yang berbeda. Baca dokumen Pembatasan Laju API Marketing untuk informasi selengkapnya tentang API Marketing.

Rekomendasi

Jika halaman dicegah, pemanggil akan mendapat pesan kesalahan untuk panggilan berikutnya dengan error code = 32, CodedException. Dibutuhkan waktu hingga satu jam untuk permintaan Anda ke halaman itu dapat diterima lagi.

Untuk menghindari pembatasan laju:

  • Sebarkan kueri secara merata di antara dua interval waktu untuk menghindari pengiriman lalu-lintas dalam kondisi spike.
  • Gunakan filter untuk membatasi ukuran tanggapan data dan menghindari panggilan yang sedang meminta data yang tumpang-tindih.
  • Gunakan header pembatasan laju untuk menyeimbangkan volume panggilan Anda secara dinamis.

Header pembatasan laju

Jika cukup panggilan dilakukan mewakili halaman sehingga dianggap layak untuk pembatasan laju oleh sistem kami, maka kami mengembalikan header HTTP X-Page-Usage. Header ini berisi persentase penggunaan terkini untuk halaman tersebut. Jika Anda melakukan panggilan menggunakan token akses halaman, Anda akan mendapat nilai X-Page-Usage hanya untuk halaman itu. Persentase ini setara dengan penggunaan yang ditampilkan di grafik pembatasan laju untuk halaman itu. Gunakan angka ini untuk menyeimbangkan beban panggilan Anda secara dinamis untuk menghindari macet.

Header pembatasan laju adalah string berformat JSON dalam bentuk berikut:

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

Nilai untuk x, y, dan z adalah bilangan bulat yang mewakili nilai yang digunakan persentase untuk setiap metrik. Saat ada metrik tersebut melampaui 100, maka aplikasi akan dibatasi nilai.

Pembatasan Laju Level Akun

Pembatasan ini berlaku pada panggilan yang dilakukan menggunakan token akses pengguna. Aplikasi Anda akan menerima kode kesalahan 17 jika batasan ini tercapai. Ini terjadi ketika akun pengguna tertentu melakukan terlalu banyak panggilan ke API.

Catatan:

Ini dapat mencakup panggilan pengguna yang dilakukan oleh berbagai aplikasi dan bukan aplikasi Anda saja.

Saat pengguna dibatasi lajunya, panggilan API dari pengguna akan terhambat.

Untuk menghindari pembatasan laju:

Tidak ada yang dapat Anda lakukan untuk mencegah hal ini. Pengguna melakukan terlalu banyak panggilan (mungkin melalui aplikasi lain) dan oleh karena itu lajunya dibatasi. Namun, jika ini terjadi kepada banyak pengguna suatu aplikasi, maka kemungkinan besar panggilan API dilakukan melalui aplikasi yang menyebabkan ini. Dalam kasus ini, Anda harus mengurangi panggilan atau menyebarkannya secara lebih merata.

Pertanyaan Umum

Apa yang dianggap sebagai panggilan API?

Semua panggilan merupakan bagian dari batas nilai, bukan hanya permintaan API HTTPS individu. Misalnya, Anda dapat membuat panggilan API tunggal dan menentukan beberapa id, tetapi setiap ID akan dihitung sebagai panggilan API itu sendiri, walaupun Anda hanya membuat satu permintaan API HTTPS.

Untuk mengilustrasikan konsep ini, lihat contoh di bawah:

Contoh Permintaan Jumlah Panggilan 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

Dalam skenario ketika Anda harus memeriksa beberapa objek menurut ID, kami sangat menyarankan Anda untuk menggunakan pendekatan kedua karena akan meningkatkan kinerja tanggapan API Anda, tetapi tidak akan meningkatkan jumlah panggilan yang dibuat untuk tujuan pembatasan laju.

Anda juga dapat menggunakan Batch API untuk mengelompokkan permintaan Anda, tetapi perhatikan bahwa setiap sub-permintaan merupakan panggilan API itu sendiri, atau bahkan beberapa panggilan API dalam hal menentukan banyak id.

Jika aplikasi atau halaman Anda menjadi terbatas nilainya, panggilan API yang mengalami kesalahan pembatasan laju juga dihitung dalam batas nilai Anda.

Kesalahan Apa Yang Akan Dilihat Aplikasi Saya?
Jenis Throttling Setidaknya Kode Kesalahan

Kemacetan level-aplikasi

200 panggilan/orang/jam

4

Pelambatan level-akun

Tidak berlaku

17

Pelambatan level halaman

4800 panggilan/orang/24 jam

32

Pelambatan level khusus

Tidak berlaku

613

Saya melihat Kode Kesalahan 613, apa yang harus saya lakukan?

Aplikasi Anda melebihi batas laju khusus. Harap menghubungi Pengelola Mitra Anda untuk mendapatkan bantuan dalam memecahkan masalah ini.

Saya membangun scraper, apa ada hal lain yang harus saya perhatikan?

Jika Anda membuat layanan yang melakukan scraping data, bacalah ketentuan scraping kami.