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
- Jika belum pernah menggunakan Batch, baca Mulai menggunakan Batch dan aktifkan Batch dengan menyelesaikan prasyarat untuk project dan pengguna.
-
Untuk mendapatkan izin yang Anda perlukan guna membuat tugas, minta administrator untuk memberi Anda peran IAM berikut:
-
Batch Job Editor (
roles/batch.jobsEditor
) pada project -
Service Account User (
roles/iam.serviceAccountUser
) pada akun layanan tugas, yang secara default merupakan akun layanan Compute Engine default
Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
-
Batch Job Editor (
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
- Jika Anda mengalami masalah saat membuat atau menjalankan tugas, lihat Pemecahan masalah.
- Melihat tugas dan tugas.
- Pelajari opsi penciptaan pekerjaan lainnya.
- Pelajari cara menganalisis tugas menggunakan log.