Menetapkan task timeout untuk tugas

Secara default, setiap tugas berjalan selama maksimum 10 menit: Anda dapat mengubahnya menjadi waktu yang lebih singkat atau lebih lama hingga 168 jam (7 hari). Untuk tugas yang menggunakan GPU, batas waktu maksimum yang tersedia adalah 1 jam.

Anda dapat menetapkan task timeout seperti yang dijelaskan di halaman ini. Tidak ada timeout eksplisit pada eksekusi job: jika semua task selesai, maka eksekusi job juga akan selesai.

Anda dapat menentukan durasi menggunakan simbol satuan waktu. Anda dapat menentukan durasi timeout sebagai nilai bilangan bulat dalam detik, menit, atau jam. Misalnya, untuk menetapkan durasi timeout sebagai 10 menit dan 5 detik, tentukan nilai sebagai 605 detik.

Jika job Anda mengaktifkan percobaan ulang, setelan timeout akan diterapkan ke setiap percobaan memulai sebuah task. Jika percobaan memulai task tidak kunjung selesai dalam kurun waktu yang telah ditentukan, maka task akan dihentikan. Semakin lama job berjalan, semakin besar kemungkinan job mengalami masalah yang menyebabkan job gagal, seperti kegagalan dependensi hilir, error kehabisan memori, atau masalah infrastruktur. Sebaiknya aktifkan percobaan ulang untuk semua job, terutama untuk job dengan tugas yang berjalan lama.

Peristiwa pemeliharaan

Job secara berkala menjalani peristiwa pemeliharaan. Selama peristiwa pemeliharaan, semua task yang sedang berlangsung akan dimigrasikan ke komputer lain. Dalam proses tersebut akan ada jeda singkat saat task sedang dimigrasikan.

Proses migrasi mempertahankan status tugas, dengan satu pengecualian penting: koneksi jaringan VPC keluar akan terputus selama peristiwa pemeliharaan. Sebaiknya gunakan library klien yang dapat menangani reset koneksi sesekali.

Cloud Run akan mencetak pesan log setiap kali task diimigrasi, saat mulai dan saat selesai.

Selain itu, jika ingin memantau atau menangani peristiwa pemeliharaan dengan cara tertentu, Anda dapat menangkap sinyal SIGTSTP, yang akan dikirim 10 detik sebelum task 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)
        }
    }()
 }
 

Peran yang diperlukan

Untuk mendapatkan izin yang Anda perlukan untuk mengonfigurasi job Cloud Run, minta administrator Anda untuk memberikan peran IAM berikut:

Untuk mengetahui daftar peran dan izin IAM yang terkait dengan Cloud Run, lihat Peran IAM Cloud Run dan Izin IAM Cloud Run. Jika job 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

  1. Di Google Cloud konsol, buka halaman Jobs Cloud Run:

    Buka Cloud Run

  2. Klik Deploy container untuk mengisi halaman setelan tugas awal. Jika Anda mengonfigurasi tugas yang ada, pilih tugas, lalu klik View and edit job configuration.

  3. Klik Containers, Connections, Security untuk memperluas halaman properti tugas.

  4. Klik tab General.

    gambar

    • Di kolom Task timeout, tentukan durasi maksimum untuk task yang ada di job tersebut, lalu pilih Time unit. Anda hanya dapat menentukan durasi timeout sebagai nilai bilangan bulat dalam second, minute, atau hour. Misalnya, untuk menetapkan durasi 10 menit dan 5 detik, di kolom Task timeout, tentukan 605, lalu pilih Time unit sebagai second.
  5. Klik Create atau Update.

gcloud

  1. Untuk job yang akan Anda perbarui:

    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, 10m5s terbaca sepuluh menit dan lima detik.
  2. Untuk job yang akan Anda perbarui:

    gcloud run jobs update JOB_NAME --task-timeout TIMEOUT

YAML

  1. Jika Anda membuat job baru, lewati langkah ini. Jika Anda memperbarui job yang ada, download konfigurasi YAML-nya:

    gcloud run jobs describe JOB_NAME --format export > job.yaml
  2. 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.

  3. 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 resource google_cloud_run_v2_job di konfigurasi Terraform Anda:

resource "google_cloud_run_v2_job" "default" {
  name     = "cloud-run-job-timeout"
  location = "us-central1"

  deletion_protection = false # set to "true" in production

  template {
    template {
      timeout = "3.500s"

      containers {
        image = "us-docker.pkg.dev/cloudrun/container/job:latest"
      }
    }
  }
}

Menampilkan setelan task timeout

Untuk melihat setelan task timeout saat ini dari job Cloud Run Anda:

Konsol

  1. Di Google Cloud konsol, buka halaman tugas Cloud Run:

    Buka tugas Cloud Run

  2. Klik tugas yang Anda minati untuk membuka halaman Job details.

  3. Klik View and Edit job configuration.

  4. Temukan setelan task timeout di detail konfigurasi.

gcloud

  1. Gunakan perintah berikut:

    gcloud run jobs describe JOB_NAME
  2. Temukan setelan task timeout dalam konfigurasi yang ditampilkan.