Dokumen ini menjelaskan cara memecahkan masalah batas operasi serentak di Compute Engine yang disebabkan oleh error rateLimitExceeded
.
Untuk membantu mengidentifikasi penyebab error rateLimitExceeded
, gunakan langkah-langkah pemecahan masalah berikut:
-
Di konsol Google Cloud, buka halaman Logs Explorer:
Jika Anda menggunakan kotak penelusuran untuk menemukan halaman ini, pilih hasil yang subjudulnya adalah Logging.
Untuk memfilter log error yang dihasilkan oleh Compute Engine API, masukkan kueri logging berikut di editor kueri.
log_id("cloudaudit.googleapis.com/activity") protoPayload.serviceName="compute.googleapis.com" protoPayload.response.error.code=403 protoPayload.status.message="Rate Limit Exceeded"
Log error yang difilter akan terlihat seperti berikut:
"protoPayload":{ "@type": "type.googleapis.com/google.cloud.audit.AuditLog", "status": { "message": "Rate Limit Exceeded" } "serviceName": "compute.googleapis.com", "methodName": "METHOD_NAME", ... ... "response": { "error": { "message": "Rate Limit Exceeded", "code": 403, "errors": [ { "message": "Rate Limit Exceeded", "reason": "rateLimitExceeded", "domain": "usageLimits" } ] }, "@type": "type.googleapis.com/error" }, "resourceLocation": { "currentLocations": [ "LOCATION" ] }, ... ...
Detail error berisi nilai berikut:
METHOD_NAME
: Nama operasi atau metode layanan. Untuk panggilan API, nama ini harus berupa nama metode API.LOCATION
: Lokasi resource. Ini dapat berupa region, zona, atau global. Misalnya, entricurrentLocations: "us-central1"
(Regional) ataucurrentLocations: "us-central1-a"
menunjukkan bahwa regionnya adalah"us-central1"
ataucurrentLocations: "global"
.
Identifikasi nilai
methodName
terkait dari log error. Nama ini mewakili metode API yang batas kapasitasnya terlampaui, misalnya:v1.compute.instances.stop
.Identifikasi lokasi yang relevan dalam log audit.
Periksa kuota dan batas
Concurrent operations per project
.Konsol
Di Konsol Google Cloud, buka halaman Quotas.
Halaman Kuota mencantumkan penggunaan dan batas kuota untuk project Anda. Secara default, daftar ini diurutkan untuk menampilkan kuota yang paling banyak digunakan terlebih dahulu, yang membantu Anda melihat batas yang berisiko terlampaui.
Untuk memfilter daftar dan melihat penggunaan serta batas untuk kuota tertentu, pilih Kuota atau Metrik di kolom Filter.
Misalnya, pilih Kuota berdasarkan nama
Concurrent global operations per project operation type
atau pilihService: Compute Engine API
,type: System Limit
, dan kata kunciconcurrent
untuk mencantumkan semua kuota operasi serentak. Pemfilteran memberikan daftar kuota serentak. Dari daftar ini, Anda dapat menelusuri kuota yang terpengaruh. Untuk memfilter kuota untuk operasi tertentu, tambahkan Dimensi ke kueri filter dan pilih operation_type (ditampilkan sebagai methodName dalam log audit).Misalnya, pilih
instances_stop
untuk melihat penggunaan dan batas kuota untuk operasiinstances.stop
.Untuk memfilter kuota untuk wilayah tertentu, tambahkan Dimensi ke kueri filter dan pilih region (ditampilkan sebagai currentLocations dalam log audit).
Misalnya, pilih
us-central1
untuk melihat batas dan penggunaan kuota untuk regionus-central1
.Filter region dan operation_type dapat digunakan bersama untuk melihat penggunaan dan batas kuota untuk operasi tertentu di wilayah tertentu.
gcloud
Anda dapat menggunakan Google Cloud CLI untuk melihat penggunaan dan batas kuota operasi serentak.
Untuk menggunakan pendekatan ini, pastikan Anda telah menginstal komponen perintah alfa. Jika Anda menggunakan Cloud Shell untuk berinteraksi dengan Google Cloud, Google Cloud CLI akan diinstal untuk Anda.
Untuk melihat kuota operasi, gunakan perintah berikut:
gcloud alpha services quota list \ --service=compute.googleapis.com \ --consumer=projects/PROJECT_ID
Ganti
PROJECT_ID
dengan ID project yang kuotanya ingin Anda lihat.Kuota ini umumnya dikelompokkan ke dalam dua kategori:
- Global atau regional
- Per project atau per project per jenis operasi
Untuk mengetahui informasi selengkapnya, lihat Grup kuota operasi serentak.
Periksa diagram penggunaan untuk kuota. Jika penggunaan mendekati atau melebihi batas kuota selama periode log error, berarti kuota atau batas sistem terlampaui.
Untuk melihat diagram yang menunjukkan penggunaan saat ini dan puncak, buka kuota, lalu klik
Monitoring. Anda mungkin perlu men-scroll ke kanan hingga akhir tabel.Grafik pemantauan akan mengonfirmasi penyebab error
rateLimitExceeded
, dengan kuota/batas tertentu. Jika nilai saat ini berada di atas nilai batas, berarti batas sistem terlampaui. Karena batas sistem tidak dapat diubah, sebaiknya lakukan praktik terbaik berikut untuk mengurangi jumlah operasi serentak.Beberapa praktik terbaik adalah sebagai berikut:
- Menunggu operasi selesai
- Mengandalkan kode error, bukan pesan error
Meminimalkan percobaan ulang sisi klien untuk mempertahankan batas kapasitas API
Salah satu metode berikut dapat digunakan untuk meminimalkan percobaan ulang: