Membatasi waktu proses untuk tugas dan runnable menggunakan waktu tunggu

Dokumen ini menjelaskan cara membatasi waktu proses tugas dan runnable dengan menetapkan waktu tunggu.

Waktu tunggu menentukan jumlah waktu yang diizinkan untuk menjalankan tugas atau tugas yang dapat dijalankan. Batch tidak mengizinkan tugas berjalan lebih dari 14 hari dan tidak menetapkan waktu tunggu default untuk setiap tugas dan tugas yang dapat dijalankan. Akibatnya, setiap tugas atau runnable dapat berjalan selama 14 hari sebelum kegagalan otomatis. Namun, jika tugas dan runnable Anda tidak dimaksudkan untuk berjalan selama itu, konfigurasi ini dapat menyebabkan biaya dan penundaan yang tidak terduga. Untuk mencegah waktu berjalan yang berlebihan, Anda dapat menetapkan waktu tunggu untuk tugas dan runnable.

Sebelum memulai

  1. Jika belum pernah menggunakan Batch, baca Mulai menggunakan Batch dan aktifkan Batch dengan menyelesaikan prasyarat untuk project dan pengguna.
  2. Untuk mendapatkan izin yang diperlukan untuk membuat tugas, minta administrator untuk memberi Anda peran IAM berikut:

    Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.

    Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.

Menyetel waktu tunggu

Anda dapat menetapkan waktu tunggu habis untuk runnable, tugas, atau keduanya. Waktu tunggu untuk runnable menentukan waktu operasi maksimum untuk runnable tersebut. Waktu tunggu untuk tugas menentukan waktu proses maksimum untuk tugas tersebut, yang merupakan jumlah dari semua waktu proses masing-masing runnable-nya. Misalnya, jika tugas memiliki 3 runnable yang semuanya berjalan secara bersamaan selama 1 menit, maka waktu proses tugas adalah 3 menit, bukan 1 menit.

Jika Anda menetapkan waktu tunggu yang tumpang-tindih—seperti waktu tunggu untuk tugas yang dapat dijalankan dan tugas yang dapat dijalankan—hanya satu waktu tunggu yang perlu terlampaui untuk memicu kegagalan otomatis. Misalnya, Anda menetapkan waktu tunggu tugas ke 60 detik dan waktu tunggu setiap runnable tugas tersebut ke 120 detik. Kemudian, contoh tugas ini dan semua runnable-nya akan gagal jika jumlah waktu proses runnable-nya melebihi 60 detik, dan tidak mungkin memicu waktu tunggu 120 detik.

Untuk memilih waktu tunggu yang sesuai yang akan ditetapkan untuk tugas dan runnable tugas, analisis log tugas serupa yang sebelumnya Anda jalankan untuk menentukan waktu proses umum untuk tugas dan runnable untuk beban kerja serupa.

Menetapkan waktu tunggu untuk tugas

Gunakan Google Cloud CLI atau REST API untuk membuat tugas yang menyertakan kolom maxRunDuration dalam objek taskSpec dari file JSON:

{
    "taskGroups": [
      {
        "taskSpec": {
          ...
          "maxRunDuration": "TIMEOUT"
        }
      }
    ]
}

Ganti TIMEOUT dengan jumlah detik maksimum atau bagian pecahan yang Anda inginkan untuk mengizinkan tugas berjalan. Contoh, 255s.

Tugas yang menetapkan waktu tunggu 255 detik untuk tugas akan memiliki file konfigurasi JSON yang mirip dengan berikut:

{
    "taskGroups": [
      {
        "taskSpec": {
          "runnables": [
            {
              "script": {
                "text": "echo Hello world! This is task ${BATCH_TASK_INDEX}. This job has a total of ${BATCH_TASK_COUNT} tasks."
              }
            }
          ],
          "maxRunDuration": "255s"
        },
        "taskCount": 3
      }
    ],
    "logsPolicy": {
        "destination": "CLOUD_LOGGING"
    }
}

Jika waktu tunggu untuk tugas terlampaui, tugas akan otomatis gagal dan waktu tunggu yang terlampaui ditunjukkan oleh kode keluar 50005 dalam peristiwa dan log status tugas. Untuk informasi selengkapnya tentang waktu tunggu yang terlampaui, lihat dokumentasi pemecahan masalah untuk kode keluar 50005.

Menetapkan waktu tunggu untuk runnable

Gunakan Google Cloud CLI atau REST API untuk membuat tugas yang menyertakan kolom timeout dalam objek runnable dari file JSON:

{
    "taskGroups": [
      {
        "taskSpec": {
          "runnables": [
            {
              ...
              "timeout": "TIMEOUT"
            }
          ]
        }
      }
    ]
}

Ganti TIMEOUT dengan jumlah detik maksimum atau bagian pecahan yang Anda izinkan untuk dijalankan. Contoh, 3.5s.

Tugas yang menetapkan waktu tunggu 3,5 detik untuk tugas yang dapat dijalankan akan memiliki file konfigurasi JSON yang mirip dengan berikut:

{
    "taskGroups": [
      {
        "taskSpec": {
          "runnables": [
            {
              "script": {
                "text": "echo Hello world! This is task ${BATCH_TASK_INDEX}. This job has a total of ${BATCH_TASK_COUNT} tasks."
              },
              "timeout": "3.5s"
            }
          ]
        },
        "taskCount": 3
      }
    ],
    "logsPolicy": {
        "destination": "CLOUD_LOGGING"
    }
}

Jika waktu tunggu untuk runnable terlampaui, runnable akan otomatis gagal dan waktu tunggu yang terlampaui ditunjukkan oleh kode keluar 50005 dalam peristiwa dan log status tugas. Untuk informasi selengkapnya tentang waktu tunggu yang terlampaui, lihat dokumentasi pemecahan masalah untuk kode keluar 50005.

Langkah selanjutnya