Membatasi waktu proses untuk tugas dan runnable menggunakan waktu tunggu

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

Waktu tunggu menentukan jumlah waktu yang diizinkan untuk menjalankan tugas atau runnable. Batch tidak mengizinkan tugas berjalan lebih dari 14 hari dan tidak menetapkan waktu tunggu default untuk setiap tugas dan runnable. Akibatnya, satu 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 penundaan dan biaya yang tidak terduga. Untuk mencegah waktu proses yang berlebihan, Anda dapat menetapkan waktu tunggu untuk tugas dan runnable.

Sebelum memulai

Menyetel waktu tunggu

Anda dapat menyetel waktu tunggu untuk runnable, tugas, atau keduanya. Waktu tunggu untuk runnable menentukan waktu proses maksimum untuk runnable tersebut. Waktu tunggu untuk suatu tugas menentukan waktu proses maksimum untuk tugas tersebut, yang merupakan jumlah dari semua waktu proses individual dari runnable-nya. Misalnya, jika sebuah tugas memiliki 3 runnable yang semuanya berjalan bersamaan selama 1 menit, waktu proses tugas adalah 3 menit, bukan 1 menit.

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

Untuk memilih waktu tunggu yang sesuai guna ditetapkan untuk tugas dan runnable tugas Anda, analisis log tugas serupa yang sebelumnya Anda jalankan untuk menentukan waktu proses standar untuk tugas dan runnable untuk workload serupa.

Menetapkan waktu tunggu untuk tugas

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

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

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

Tugas yang menetapkan waktu tunggu 255 detik untuk sebuah tugas akan memiliki file konfigurasi JSON seperti berikut ini:

{
    "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 suatu tugas terlampaui, tugas tersebut akan otomatis gagal dan waktu tunggu habis ditunjukkan oleh kode keluar 50005 di peristiwa status dan log tugas. Untuk mengetahui informasi selengkapnya tentang waktu tunggu 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 di objek runnable file JSON:

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

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

Tugas yang menetapkan waktu tunggu 3,5 detik untuk runnable akan memiliki file konfigurasi JSON yang mirip dengan berikut ini:

{
    "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, runtime yang dapat dijalankan akan otomatis gagal dan waktu tunggu yang terlampaui ditunjukkan oleh kode keluar 50005 di peristiwa status dan log tugas. Untuk mengetahui informasi selengkapnya tentang waktu tunggu terlampaui, lihat dokumentasi pemecahan masalah untuk kode keluar 50005.

Langkah selanjutnya