Secara default, setiap tugas berjalan selama maksimum 10 menit: Anda dapat mengubahnya menjadi waktu yang lebih singkat atau waktu yang lebih lama hingga 168 jam (7 hari). Untuk tugas yang menggunakan GPU, waktu tunggu maksimum yang tersedia adalah 12 jam (pratinjau).
Anda dapat mengatur task timeout seperti yang dijelaskan di halaman ini. Tidak ada waktu tunggu eksplisit pada eksekusi tugas: jika semua tugas selesai, eksekusi tugas juga akan selesai.
Anda dapat menentukan durasi menggunakan simbol satuan waktu. Anda dapat menentukan durasi waktu tunggu sebagai nilai bilangan bulat dalam detik, menit, atau jam. Misalnya, untuk menetapkan durasi waktu tunggu menjadi
10 menit dan 5 detik, tentukan nilainya sebagai 605 detik.
Jika tugas Anda mengaktifkan percobaan ulang, setelan waktu tunggu akan diterapkan ke setiap percobaan memulai sebuah tugas. Jika percobaan memulai task tidak kunjung selesai dalam kurun waktu yang telah ditentukan, maka task akan dihentikan. Makin lama tugas berjalan, makin besar kemungkinan tugas tersebut mengalami masalah yang menyebabkannya gagal, seperti kegagalan dependensi downstream, error kehabisan memori, atau masalah infrastruktur. Sebaiknya aktifkan percobaan ulang untuk semua tugas, terutama untuk tugas yang berjalan lama.
Peristiwa pemeliharaan
Tugas yang tidak menggunakan GPU akan dimigrasikan secara langsung selama peristiwa pemeliharaan. Tugas yang menggunakan GPU tidak dapat dimigrasikan langsung dan akan dihentikan; pelajari lebih lanjut.
Proses migrasi mempertahankan status tugas, dengan satu pengecualian penting: koneksi jaringan VPC keluar terputus selama peristiwa pemeliharaan. Sebaiknya gunakan library klien yang dapat menangani reset koneksi sesekali.
Cloud Run mencetak pesan log setiap kali tugas dimulai dan selesai dimigrasikan.
Selain itu, jika ingin memantau atau menangani peristiwa pemeliharaan dengan cara tertentu,
Anda dapat menangkap sinyal SIGTSTP, yang akan dikirim 10 detik sebelum tugas
dimigrasikan. Setelah proses migrasi, task akan menerima sinyal SIGCONT segera
setelah task tersebut dimulai ulang.
Berikut adalah contoh fungsi dalam bahasa GO yang akan menangkap sinyal tersebut dan mencetak entri log:
func testSignals() { sigs := make(chan os.Signal, 1) signal.Notify(sigs, syscall.SIGTSTP, syscall.SIGCONT) go func() { for { sig := <-sigs log.Printf("Got Signal: %v", sig) } }() }
Tugas GPU yang berjalan lama
Dalam kasus tertentu seperti tugas GPU yang berjalan lama, peristiwa pemeliharaan dapat mengakibatkan preemption atau penghentian instance tanpa migrasi langsung.
Untuk menangani peristiwa ini
dengan baik, salah satu opsinya adalah menangkap sinyal SIGTERM, yang dikirim Cloud Run
10 detik sebelum penghentian tugas, untuk menyimpan progres dengan menulis
checkpoint akhir dan menyimpan status ke penyimpanan persisten. Lihat
Mendesain tugas GPU yang berjalan lama dan tangguh untuk mengetahui detail
selengkapnya.
Namun, perhatikan bahwa Anda memiliki waktu sekitar 10 detik setelah SIGTERM sebelum tugas dihentikan.
Waktu ini tidak cukup untuk menulis checkpoint model yang besar. Perlakukan pengendali SIGTERM
sebagai flush upaya terbaik untuk status kecil saja, dan andalkan checkpointing
berkala sebagai perlindungan utama Anda. Pilih interval checkpoint berdasarkan seberapa banyak pekerjaan yang dapat Anda korbankan.
Karena tugas GPU tidak dimigrasikan secara langsung, tugas yang dikonfigurasi dengan waktu tunggu beberapa jam diperkirakan akan terganggu setidaknya sekali sebelum selesai. Waktu tunggu tugas adalah nilai maksimum, bukan jaminan eksekusi tanpa gangguan.
Peran yang diperlukan
Untuk mendapatkan izin yang Anda perlukan untuk mengonfigurasi tugas Cloud Run, minta administrator untuk memberi Anda peran IAM berikut:
- Cloud Run Developer (
roles/run.developer) pada tugas Cloud Run - Pengguna Akun Layanan (
roles/iam.serviceAccountUser) pada identitas layanan
Untuk mengetahui daftar peran dan izin IAM yang terkait dengan Cloud Run, lihat Peran IAM Cloud Run dan Izin IAM Cloud Run. Jika tugas Cloud Run Anda berinteraksi dengan Google Cloud API, seperti Library Klien Cloud, lihat panduan konfigurasi identitas layanan. Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat izin deployment dan mengelola akses.
Menyetel task timeout
Untuk menentukan task timeout pada sebuah job Cloud Run:
Konsol
Di konsol Google Cloud , buka halaman Cloud Run:
Pilih Jobs dari menu navigasi Cloud Run:
Jika Anda membuat tugas baru, klik Deploy container untuk mengisi halaman setelan tugas awal.
Jika Anda mengonfigurasi tugas yang ada, pilih tugas, lalu klik View and edit job configuration.
Klik Containers, Connections, Security untuk meluaskan halaman properti tugas.
Di kolom Task timeout, tentukan durasi maksimum untuk task yang ada di job tersebut, lalu pilih Time unit. Anda hanya dapat menentukan durasi waktu tunggu sebagai nilai bilangan bulat dalam detik, menit, atau jam. Misalnya, untuk menetapkan durasi 10 menit dan 5 detik, di kolom Task timeout, tentukan
605, dan pilih Time unit sebagai second.Klik Buat atau Perbarui.
gcloud
Untuk job yang Anda buat:
gcloud run jobs create JOB_NAME --image IMAGE_URL --task-timeout TIMEOUT
Ganti
- JOB_NAME dengan nama tugas Anda.
IMAGE_URL: referensi ke image container—misalnya,us-docker.pkg.dev/cloudrun/container/job:latest.- TIMEOUT dengan durasi maksimum untuk task,
tentukan jumlah waktu dan satuannya: contohnya,
10m5sterbaca sepuluh menit dan lima detik.
Untuk job yang akan Anda perbarui:
gcloud run jobs update JOB_NAME --task-timeout TIMEOUT
YAML
Jika Anda membuat tugas baru, lewati langkah ini. Jika Anda mengupdate tugas yang ada, download konfigurasi YAML-nya:
gcloud run jobs describe JOB --format export > job.yaml
Perbarui atribut
timeoutSeconds::apiVersion: run.googleapis.com/v1 kind: Job metadata: name: JOB spec: template: spec: template: spec: containers: - image: IMAGE timeoutSeconds: TIMEOUT
Ganti:
- JOB_NAME dengan nama tugas Anda.
IMAGE_URL: referensi ke image container—misalnya,us-docker.pkg.dev/cloudrun/container/job:latest.- TIMEOUT dengan durasi maksimum untuk task,
tentukan jumlah waktu dan satuannya. Anda hanya dapat menentukan waktu
sebagai nilai bilangan bulat dalam detik, menit, atau jam. Misalnya, untuk menetapkan
durasi 10 menit dan 5 detik, tentukan
605.
Anda juga dapat menentukan detail konfigurasi lainnya, seperti variabel lingkungan atau batas memori.
Perbarui konfigurasi tugas yang ada:
gcloud run jobs replace job.yaml
Terraform
Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform.
Tambahkan kode berikut ke resourcegoogle_cloud_run_v2_job dalam konfigurasi Terraform Anda:Menampilkan setelan task timeout
Untuk melihat setelan task timeout saat ini dari job Cloud Run Anda, gunakan konsol Google Cloud atau Google Cloud CLI:
Konsol
Di konsol Google Cloud , buka halaman tugas Cloud Run:
Klik tugas untuk membuka halaman Job details.
Klik View and edit job configuration.
Temukan setelan task timeout di detail konfigurasi.
gcloud
Jalankan perintah berikut:
gcloud run jobs describe JOB
Temukan setelan task timeout dalam konfigurasi yang ditampilkan.