Halaman ini menjelaskan cara membuat dan menyesuaikan push queue, serta cara memeriksa konten antrean.
Menggunakan file konfigurasi antrean untuk membuat antrean
Untuk memproses tugas, Anda harus menambahkannya ke push queue. App Engine menyediakan
push queue default, bernama default
, yang dikonfigurasi dan siap
digunakan dengan setelan default. Jika mau, Anda cukup menambahkan semua tugas
ke antrean default, tanpa harus membuat dan mengonfigurasi antrean lainnya.
Untuk menambahkan antrean atau mengubah konfigurasi default, edit file konfigurasi antrean untuk aplikasi Anda, yang Anda upload ke App Engine. Anda dapat membuat hingga 100 antrean. Antrean tidak dapat dibuat secara dinamis.
File konfigurasi antrean ini mendefinisikan dua antrean:
queue:
- name: queue-blue
target: v2.task-module
rate: 5/s
- name: queue-red
rate: 1/s
Untuk mengupload file:
gcloud app deploy queue.yaml
Semua tugas yang ditambahkan ke queue-blue
dikirim ke modul target v2.task-module
.
Kecepatan refresh queue-red
diubah dari 5/dtk menjadi 1/dtk. Tugas akan
dihapus dari antrean dan dikirim ke targetnya dengan kecepatan 1 tugas per detik.
Jika menghapus antrean, Anda harus menunggu sekitar 7 hari sebelum membuat antrean baru dengan nama yang sama.
Ada banyak parameter lain yang dapat ditambahkan ke file konfigurasi untuk menyesuaikan perilaku push queue. Untuk mengetahui informasi selengkapnya, lihat referensi file konfigurasi antrean.
Menentukan kecepatan pemrosesan push queue
Anda dapat mengontrol tingkat pemrosesan tugas di setiap antrean dengan
menentukan perintah lain, seperti
rate
,
bucket_size
,
dan
max_concurrent_requests
.
Task queue menggunakan token bucket untuk
mengontrol laju eksekusi tugas. Setiap antrean bernama memiliki token bucket yang
menyimpan token, hingga jumlah maksimum yang ditentukan oleh bucket_size
, atau maksimum
5 token jika Anda tidak menentukan ukuran bucket.
Setiap kali aplikasi Anda menjalankan sebuah tugas, token akan dihapus dari bucket.
Aplikasi Anda akan terus memproses tugas dalam antrean sampai bucket antrean
kehabisan token. App Engine mengisi ulang bucket dengan token baru secara terus-menerus berdasarkan
rate
yang Anda tentukan untuk antrean.
Jika antrean berisi tugas yang akan diproses, dan bucket antrean berisi token, App Engine akan secara bersamaan memproses tugas sebanyak token yang ada. Hal ini dapat menyebabkan burst pemrosesan, yang menghabiskan resource sistem, dan bersaing dengan permintaan layanan pengguna.
Jika Anda ingin mencegah terlalu banyak tugas dijalankan sekaligus atau untuk mencegah
pertentangan datastore, gunakan max_concurrent_requests
.
Contoh berikut menunjukkan cara menetapkan max_concurrent_requests
untuk membatasi
tugas dan juga menunjukkan cara menyesuaikan ukuran dan kapasitas bucket berdasarkan
kebutuhan aplikasi Anda dan resource yang tersedia:
queue:
- name: queue-blue
rate: 20/s
bucket_size: 40
max_concurrent_requests: 10
Menetapkan batas penyimpanan untuk semua antrean
Anda dapat menggunakan file konfigurasi antrean untuk menentukan jumlah total penyimpanan yang dapat digunakan
oleh data tugas pada semua antrean. Untuk menentukan batas penyimpanan total, sertakan
elemen bernama total_storage_limit
di tingkat atas:
# Set the total storage limit for all queues to 120MB
total_storage_limit: 120M
queue:
- name: queue-blue
rate: 35/s
Nilainya adalah angka yang diikuti oleh unit: B
untuk byte, K
untuk kilobyte, M
untuk megabyte, G
untuk gigabyte, T
untuk terabyte. Misalnya, 100K
menetapkan batas 100 kilobyte. Jika penambahan tugas akan menyebabkan antrean melebihi
batas penyimpanannya, panggilan untuk menambahkan tugas akan gagal. Batas default
adalah 500M
(500 megabyte) untuk aplikasi gratis. Untuk aplikasi yang ditagih, tidak ada batasan hingga
Anda menetapkannya secara eksplisit. Anda dapat menggunakan batas ini untuk melindungi aplikasi Anda dari error pemrograman fork
bomb
saat setiap tugas menambahkan beberapa tugas lain selama
eksekusinya.
Jika aplikasi Anda mengalami error karena kuota tidak mencukupi saat menambahkan tugas, meningkatkan total batas penyimpanan dapat membantu. Jika Anda menggunakan fitur ini, sebaiknya tetapkan batas yang sesuai dengan penyimpanan yang diperlukan untuk tugas selama beberapa hari. Hal ini memungkinkan antrean untuk sementara dicadangkan dan terus menerima tugas baru saat mengerjakan backlog sambil tetap terlindungi dari error pemrograman fork bomb.
Mengonfigurasi jumlah maksimum permintaan serentak
Anda dapat mengontrol kecepatan pemrosesan dengan
menetapkan max_concurrent_requests
, yang membatasi jumlah tugas yang dapat
dijalankan secara bersamaan.
Jika antrean aplikasi Anda memiliki kecepatan 20/dtk dan ukuran bucket 40, tugas dalam antrean tersebut akan dijalankan pada kecepatan 20/dtk dan untuk sesaat dapat terjadi burst hingga 40/dtk. Setelan ini berfungsi dengan baik jika latensi tugas relatif rendah; namun, jika latensi meningkat secara signifikan, Anda akan memproses tugas serentak yang lebih banyak secara signifikan. Beban pemrosesan ekstra ini dapat menghabiskan instance tambahan dan memperlambat aplikasi Anda.
Misalnya, anggaplah latensi tugas normal Anda adalah 0,3 detik. Pada
latensi ini, Anda akan memproses maksimal 40 tugas secara bersamaan. Namun, jika latensi tugas Anda
meningkat menjadi 5 detik, Anda dapat dengan mudah memproses lebih dari
100 tugas sekaligus. Peningkatan ini memaksa aplikasi Anda menggunakan lebih banyak instance untuk
memproses tugas tambahan, yang berpotensi memperlambat seluruh aplikasi dan
mengganggu permintaan pengguna. Anda dapat menghindari kemungkinan ini dengan menetapkan
max_concurrent_requests
ke nilai yang lebih rendah.
Misalnya, jika Anda menetapkan max_concurrent_requests
ke 10, contoh
antrean akan mempertahankan sekitar 20 tugas/detik jika latensi adalah 0,3 detik.
Saat latensi meningkat lebih dari 0,5 detik, setelan ini akan men-throttle
kecepatan pemrosesan untuk memastikan bahwa tidak lebih dari 10 tugas berjalan secara bersamaan.
queue:
# Set the max number of concurrent requests to 50
- name: optimize-queue
rate: 20/s
bucket_size: 40
max_concurrent_requests: 10
Memantau antrean di konsol Google Cloud
Di konsol Google Cloud, buka halaman Cloud Tasks.
Perlu diketahui bahwa jika Anda membuka halaman Task queue App Engine, akan ada petunjuk yang memandu Anda ke halaman Cloud Tasks. Update di konsol Google Cloud ini tidak mengubah fungsi Task queue.
Aktifkan Cloud Tasks API.
Setelah berada di halaman Cloud Tasks, Anda akan melihat daftar semua antrean dalam aplikasi. Mengklik nama antrean akan memunculkan halaman Detail Antrean, yang menampilkan semua tugas dalam antrean yang dipilih.
Langkah selanjutnya
Pelajari cara membuat tugas.