Halaman ini menjelaskan beberapa masalah dan batasan yang mungkin Anda temui saat menggunakan Cloud Tasks.
Urutan eksekusi
Dengan pengecualian tugas yang dijadwalkan untuk dijalankan pada masa mendatang, task queue sepenuhnya tidak bergantung pada platform terkait urutan eksekusi. Tidak ada jaminan atau upaya terbaik yang dilakukan untuk menjalankan tugas dalam urutan tertentu. Secara khusus: tidak ada jaminan bahwa tugas lama akan dieksekusi kecuali jika antrean dikosongkan sepenuhnya. Ada sejumlah kasus umum saat tugas yang lebih baru dijalankan lebih cepat daripada tugas yang lebih lama, dan pola di sekitarnya dapat berubah tanpa pemberitahuan.
Eksekusi duplikat
Cloud Tasks bertujuan untuk semantik "eksekusi tepat satu kali" yang ketat. Namun, dalam situasi ketika kompromi desain harus dilakukan antara eksekusi yang dijamin dan eksekusi duplikat, layanan akan melakukan kesalahan pada eksekusi yang dijamin. Dengan demikian, jumlah eksekusi duplikat yang bukan nol akan terjadi. Developer harus mengambil langkah-langkah untuk memastikan bahwa eksekusi duplikat bukan peristiwa yang berakibat fatal. Dalam produksi, lebih dari 99,999% tugas hanya dijalankan sekali.
Batasan resource
Sumber backlog yang paling umum dalam antrean pemrosesan langsung adalah menghabiskan resource di instance target. Jika pengguna mencoba menjalankan 100 tugas per detik pada instance frontend yang hanya dapat memproses 10 permintaan per detik, backlog akan dibuat. Hal ini biasanya muncul dalam salah satu dari dua cara, yang umumnya dapat diselesaikan dengan meningkatkan jumlah instance yang memproses permintaan.
Error backoff dan tarif yang diterapkan
Server yang kelebihan beban dapat mulai menampilkan error backoff: HTTP 503
(untuk target App Engine), atau HTTP 429
atau 5xx
(untuk target eksternal).
Cloud Tasks bereaksi terhadap error ini dengan memperlambat eksekusi hingga error berhenti. Throttling sistem ini mencegah pekerja mengalami kelebihan beban. Perhatikan
bahwa setelan yang ditentukan pengguna tidak akan diubah.
Throttling sistem terjadi dalam situasi berikut:
Cloud Tasks akan berhenti melakukan semua error. Biasanya, backoff yang ditentukan dalam
rate limits
akan digunakan. Namun, jika pekerja menampilkan HTTP429 Too Many Requests
,503 Service Unavailable
, atau rasio error tinggi, Cloud Tasks akan menggunakan rasio backoff yang lebih tinggi. Percobaan ulang yang ditentukan dalam header respons HTTPRetry-After
akan dipertimbangkan.Untuk mencegah lonjakan traffic dan memperlancar peningkatan traffic secara tiba-tiba, pengiriman ditingkatkan secara perlahan saat antrean baru dibuat atau tidak ada aktivitas, dan jika sejumlah besar tugas tiba-tiba tersedia untuk dikirim (karena lonjakan rasio tugas pembuatan, antrean tidak dijeda, atau banyak tugas yang dijadwalkan secara bersamaan).
Lonjakan latensi dan serentak maks
Server yang kelebihan beban juga dapat merespons dengan peningkatan latensi yang besar.
Dalam situasi ini, permintaan tetap terbuka lebih lama. Karena antrean berjalan dengan jumlah tugas serentak maksimum, hal ini dapat menyebabkan antrean tidak dapat menjalankan tugas dengan kecepatan yang diharapkan. Meningkatkan
max_concurrent_tasks
untuk antrean yang terpengaruh dapat membantu dalam situasi saat nilai telah ditetapkan terlalu
rendah, sehingga menyebabkan batas kapasitas buatan. Namun, meningkatkan max_concurrent_tasks
kemungkinan tidak akan mengurangi tekanan resource yang mendasarinya.
Mempercepat masalah dengan tugas yang berjalan lama
Antrean Cloud Tasks meningkatkan outputnya sebagian berdasarkan jumlah tugas yang berhasil dikirim sebelumnya. Jika pengendali tugas memerlukan waktu yang cukup lama - dalam hitungan menit - untuk menyelesaikan tugas dan menampilkan respons keberhasilan, mungkin ada keterlambatan dalam kecepatan peningkatan antrean.
Melihat lebih dari 5.000 tugas
Jika Anda memiliki lebih dari 5.000 tugas, beberapa tugas tidak akan terlihat di konsol Google Cloud. Gunakan gcloud CLI untuk melihat semua tugas.