Pembatasan Laju di API Graf

Pembatasan laju mendefinisikan batasan pada jumlah panggilan API yang dapat dilakukan dalam periode waktu yang ditetapkan. Batasan laju diberlakukan pada setiap aplikasi.

Aplikasi yang melampaui batasan lajunya secara berlebihan atau terus-menerus akan dapat dinonaktifkan.

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: 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.

Semua panggilan API dari aplikasi yang dibuat setelah melampaui batasan laju akan dihambat dan akan gagal dengan error code = 4, CodedException. Panggilan akan mulai berhasil lagi saat penggunaan selama satu jam terakhir tidak melampaui batasan. Batasan dihitung menurut rentang waktu per jam yang berkelanjutan, dan persentase penggunaan saat ini dapat dilihat di dasbor aplikasi Anda.

Dasbor pembatasan laju

Alat pembatasan laju memberi Anda informasi tentang seberapa dekat aplikasi Anda dengan kondisi macet. Anda dapat melihat informasi mengenai dampak batasan laju terhadap aplikasi dengan menggunakan dua grafis di dasbor aplikasi.

  • Salah satu grafis menunjukkan penggunaan saat ini yang mempengaruhi tanggapan API Graf yang dikembalikan. Ini adalah penggambaran visual nilai header yang dikembalikan dalam permintaan API Graf.
Grafik untuk Aplikasi yang Mendekati Batasan Lajunya
  • Grafik kedua menunjukkan riwayat batasan laju. Anda dapat memilih untuk menampilkan data untuk 24 jam terakhir atau 7 hari terakhir. Anda dapat mengklik sampel mana pun di grafik riwayat untuk melihat detail selengkapnya mengenai penggunaannya, termasuk perincian setiap metode. Tidak semua aplikasi memiliki data riwayat, karena ada tidaknya data riwayat bergantung pada volume panggilan. Aplikasi yang memiliki volume panggilan yang lebih tinggi memiliki kemungkinan lebih besar untuk menyediakan data riwayat.
Graf Riwayat untuk Aplikasi yang Melampaui Batas Laju dalam 24 Jam Terakhir

Batasan

Jumlah total panggilan yang dapat dibuat aplikasi Anda setiap jam adalah 200 kali jumlah pengguna. Ini bukan merupakan batasan untuk setiap pengguna. Pengguna mana pun dapat membuat lebih dari 200 panggilan setiap jam, selama jumlah total untuk semua pengguna tidak melampaui jumlah maksimal aplikasi. Misalnya, jika aplikasi Anda memiliki 100 pengguna, maka aplikasi dapat membuat 20.000 panggilan setiap jam. Akan tetapi, sepuluh pengguna Anda dengan tingkat interaksi terbanyak dapat membuat 19.000 panggilan tersebut.

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

Jumlah pengguna untuk aplikasi Anda dihitung menggunakan jumlah pengguna aktif harian dan jumlah login baru pada hari ini. Apabila terdapat periode penggunaan harian yang sepi, maka pengguna yang aktif secara mingguan, bahkan bulanan, akan digunakan untuk menghitung jumlah pengguna untuk aplikasi Anda. Aplikasi dengan tingkat interaksi harian yang tinggi akan memiliki batasan laju yang lebih tinggi dibandingkan dengan aplikasi yang memiliki tingkat interaksi harian yang rendah, terlepas dari jumlah instalan aplikasi.

Peringatan:

  • Tidak semua panggilan API terkena pembatasan laju, sehingga jumlah panggilan yang Anda lakukan mungkin tidak cocok dengan yang Anda lihat di alat pembatasan laju.
  • Kami juga menghambat panggilan berdasarkan waktu CPU yang digunakan dan total waktu. Endpoint yang mengharuskan pemrosesan dalam kadar yang banyak dapat menyebabkan aplikasi Anda mencapai batasan ini, terlepas dari keadaannya yang tidak melampaui batasan volume panggilan. Jarang bagi aplikasi untuk mencapai batasan waktu CPU dan total waktu, kecuali untuk sejumlah endpoint khusus. Informasi mengenai endpoint yang menggunakan banyak waktu CPU atau total waktu dapat dilihat di grafik riwayat, apabila tersedia.
  • API Insight Iklan dan API Marketing mungkin menggunakan set pembatasan nilai yang berbeda. Baca dokumen Pembatasan Nilai API Marketing di https://developers.facebook.com/docs/marketing-api/api-rate-limiting untuk informasi selengkapnya tentang API Marketing.

Rekomendasi

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

Semua tanggapan ke panggilan yang dibuat ke API Graf menyertakan 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.

Postingan blog di https://developers.facebook.com/blog/post/2016/06/16/page-level-rate-limits/ menyediakan penjelasan terperinci mengenai pembatasan nilai 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 diupdate 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.

Peringatan:

  • 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 Insight Iklan dan API Marketing mungkin menggunakan set pembatasan nilai yang berbeda. Baca dokumen Pembatasan Nilai 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?

Jika tanggapan kesalahan Anda berisi error_subcode 1996, Facebook telah mengamati perilaku tidak konsisten dalam volume permintaan API aplikasi Anda. Jika Anda melakukan perubahan terbaru yang memengaruhi jumlah permintaan API, Anda dapat mengalami kesalahan ini.

Jika Anda tidak melihat subkode ini, aplikasi Anda berarti melampaui batas penilaian khusus. Harap menghubungi Pengelola Partner 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.