Masalah dan batasan

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 HTTP 429 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 HTTP Retry-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.