Dokumen ini menjelaskan cara membatasi waktu berjalan tugas dan runnable dengan menetapkan waktu tunggu. Atau, jika Anda ingin runnable selesai segera setelah setiap runnable lain dalam tugasnya selesai berjalan, gunakan runnable latar belakang sebagai gantinya.
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, tugas atau runnable individual dapat berjalan selama 14 hari sebelum otomatis gagal. 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
- 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 untuk membuat tugas, minta administrator Anda untuk memberi Anda peran IAM berikut:
-
Batch Job Editor (
roles/batch.jobsEditor
) di project -
Pengguna Akun Layanan (
roles/iam.serviceAccountUser
) di akun layanan tugas, yang secara default adalah akun layanan Compute Engine default
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.
-
Batch Job Editor (
Menyetel waktu tunggu
Anda dapat menyetel waktu tunggu untuk runnable, tugas, atau keduanya. Waktu tunggu untuk runnable menentukan waktu berjalan maksimum untuk runnable tersebut. Waktu tunggu tugas menentukan waktu berjalan maksimum untuk tugas tersebut, yang merupakan jumlah semua waktu berjalan individual dari runnables-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 runnable dan tugas runnable—maka hanya satu waktu tunggu yang perlu terlampaui untuk memicu kegagalan otomatis. Misalnya, Anda menetapkan waktu tunggu tugas menjadi 60 detik dan waktu tunggu setiap runnable tugas tersebut menjadi 120 detik. Kemudian, contoh tugas ini dan semua runnables-nya akan gagal saat jumlah waktu proses runnables-nya melebihi 60 detik, dan tidak mungkin memicu waktu tunggu 120 detik.
Untuk memilih waktu tunggu yang sesuai untuk ditetapkan bagi tugas dan runnable pekerjaan Anda, analisis log pekerjaan serupa yang sebelumnya Anda jalankan untuk menentukan waktu proses yang umum untuk tugas dan runnable bagi beban kerja serupa.
Menyetel waktu tunggu untuk tugas
Gunakan Google Cloud CLI atau REST API untuk
membuat tugas yang
mencakup
kolom maxRunDuration
dalam objek taskSpec
file JSON:
{
"taskGroups": [
{
"taskSpec": {
...
"maxRunDuration": "TIMEOUT"
}
}
]
}
Ganti TIMEOUT
dengan jumlah detik maksimum atau
bagian fraksional yang Anda inginkan agar tugas dapat 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 tugas terlampaui, tugas akan otomatis gagal dan
waktu tunggu yang terlampaui ditunjukkan oleh kode keluar 50005
dalam
log dan peristiwa status tugas. Untuk mengetahui informasi selengkapnya tentang waktu tunggu yang terlampaui, lihat
dokumentasi pemecahan masalah untuk kode keluar 50005.
Menetapkan waktu tunggu untuk yang dapat dijalankan
Gunakan Google Cloud CLI atau REST API untuk
membuat tugas yang
mencakup
kolom timeout
dalam objek runnable
file JSON:
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
...
"timeout": "TIMEOUT"
}
]
}
}
]
}
Ganti TIMEOUT
dengan jumlah detik maksimum atau
bagian fraksional yang Anda inginkan agar runnable berjalan. Contoh, 3.5s
.
Tugas yang menyetel waktu tunggu 3,5 detik untuk runnable 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 mengetahui informasi selengkapnya tentang waktu tunggu yang terlampaui, lihat
dokumentasi pemecahan masalah untuk kode keluar 50005.
Langkah berikutnya
- Jika Anda mengalami masalah saat membuat atau menjalankan tugas, lihat Pemecahan masalah.
- Melihat tugas.
- Pelajari lebih lanjut opsi pembuatan tugas.
- Pelajari cara menganalisis tugas menggunakan log.