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
- Jika belum pernah menggunakan Batch, baca Mulai menggunakan Batch dan aktifkan Batch dengan menyelesaikan prasyarat untuk project dan pengguna.
-
Untuk mendapatkan izin yang diperlukan untuk membuat tugas, minta administrator 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 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
- Jika Anda mengalami masalah saat membuat atau menjalankan tugas, lihat Pemecahan masalah.
- Lihat tugas dan pekerjaan.
- Pelajari opsi pembuatan tugas lainnya.
- Pelajari cara menganalisis tugas menggunakan log.