Halaman ini menjelaskan masalah umum yang mungkin Anda alami saat menggunakan Batch.
Jika Anda memerlukan bantuan lebih lanjut terkait penggunaan Batch, lihat dokumentasi Pemecahan masalah atau Mendapatkan dukungan.
Pub/Sub mungkin tidak mengirimkan notifikasi untuk status sementara selama perubahan cepat
Pub/Sub mungkin tidak mengirimkan notifikasi untuk semua status perantara saat tugas atau pekerjaan berubah dengan sangat cepat. Misalnya, anggaplah bahwa tugas dengan cepat
berubah status dari ASSIGNED, lalu RUNNING, dan kemudian FAILED. Dalam
skenario tersebut, Anda mungkin tidak mendapatkan notifikasi bahwa tugas telah mencapai status
RUNNING.
Untuk mengurangi masalah ini, sebaiknya, saat Anda ingin melihat histori status lengkap tugas atau pekerjaan, lihat peristiwa status, bukan notifikasi Pub/Sub.
Untuk mengetahui informasi selengkapnya tentang notifikasi Pub/Sub, lihat Memantau status tugas menggunakan notifikasi Pub/Sub dan BigQuery.
Log waktu tunggu tidak menunjukkan apakah waktu tunggu tugas atau runnable telah terlampaui
Jika tugas gagal karena melebihi waktu tunggu, log yang terkait dengan tugas tidak menunjukkan apakah kegagalan disebabkan oleh waktu tunggu tugas yang relevan atau waktu tunggu runnable yang relevan.
Untuk mengatasi masalah ini, tetapkan nilai waktu tunggu yang berbeda untuk tugas dan runnable. Kemudian, Anda dapat mengidentifikasi apakah kegagalan disebabkan oleh melebihi waktu tunggu tugas atau runnable yang relevan menggunakan prosedur berikut:
Mengidentifikasi tugas, runnable, dan waktu kegagalan karena waktu tunggu terlampaui.
Temukan log yang menyebutkan kode keluar waktu tunggu terlampaui,
50005. Log ini memilikitextPayloadyang mirip dengan pesan berikut:Task task/JOB_UID-group0-TASK_INDEX/0/0 runnable RUNNABLE_INDEX...exitCode 50005
Dari log tersebut, catat
TASK_INDEXsebagai tugas yang gagal,RUNNABLE_INDEXsebagai runnable yang gagal, dan nilaitimestamplog sebagai waktu kegagalan karena waktu tunggu terlampaui.
Identifikasi waktu mulai tugas yang gagal.
Temukan peristiwa status yang menyebutkan pesan berikut:
Task state is updated from ASSIGNED to RUNNING
Dari peristiwa status tersebut, catat kolom
eventTimesebagai waktu mulai tugas yang gagal.
Hitung total waktu proses tugas yang gagal, \({failedTaskRunTime}\), menggunakan formula berikut:
\[{failedTaskRunTime}={failureTime}-{failedTaskStartTime}\]
Ganti nilai berikut:
- \({failureTime}\): waktu kegagalan karena waktu tunggu habis.
- \({failedTaskStartTime}\): waktu mulai tugas yang gagal.
Mengidentifikasi waktu tunggu yang terlampaui:
Jika \({failedTaskRunTime}\) cocok dengan waktu tunggu yang Anda konfigurasi untuk tugas yang gagal, maka waktu tunggu tugas yang gagal tersebut telah terlampaui dan menyebabkan kegagalan.
Jika tidak, waktu tunggu yang Anda konfigurasi untuk runnable yang gagal telah terlampaui dan menyebabkan kegagalan.
Tugas yang menggunakan reservasi mungkin tertunda atau dicegah
Saat Anda mencoba membuat dan menjalankan tugas yang menggunakan reservasi Compute Engine, Batch mungkin menunda atau mencegah tugas berjalan dengan tidak benar. Secara khusus, Batch mewajibkan project memiliki kuota resource Compute Engine yang memadai bahkan saat kuota resource tersebut digunakan oleh pemesanan yang tidak digunakan.
Pelajari lebih lanjut masalah ini sebagai berikut:
- Jika Anda ingin mengetahui informasi selengkapnya tentang cara dan waktu masalah ini memengaruhi tugas, lihat Mengidentifikasi dan memahami masalah ini.
- Untuk mempelajari cara mencegah atau menyelesaikan masalah ini, lihat Mengatasi masalah ini.
Mengidentifikasi dan memahami masalah ini
Masalah ini tidak ditunjukkan oleh pesan error tertentu. Namun, masalah ini dapat terjadi dalam situasi berikut:
Jika project Anda mencadangkan semua resource yang memiliki kuota, masalah ini akan mencegah tugas apa pun yang menentukan resource tersebut.
Misalnya, anggaplah project Anda memiliki hal berikut:
- Kuota maksimum untuk GPU H100 adalah 16.
- Pemesanan project tunggal yang tidak digunakan untuk 2 VM
a3-highgpu-8g, yang memesan total 16 GPU H100.
Dalam skenario ini, masalah ini mencegah project Anda menjadwalkan dan menjalankan tugas apa pun yang dikonfigurasi dengan benar untuk menggunakan GPU H100 yang dicadangkan.
Jika project Anda memesan beberapa resource yang memiliki kuota, masalah ini dapat mencegah atau menunda tugas yang menentukan resource tersebut.
Misalnya, anggaplah project Anda memiliki hal berikut:
- Kuota maksimum untuk GPU H100 adalah 16.
- Pemesanan project tunggal yang tidak digunakan untuk 1 VM
a3-highgpu-8g, yang mencadangkan total 8 GPU H100. - VM
a3-highgpu-8gyang dikonfigurasi agar tidak memakai pemesanan apa pun dan terkadang dihapus lalu dibuat ulang. (VM ini menggunakan 8 GPU H100 yang tidak dicadangkan saat ada.)
Dalam skenario ini, masalah ini hanya memungkinkan project Anda menjadwalkan dan mulai menjalankan tugas apa pun yang dikonfigurasi dengan benar untuk menggunakan GPU H100 yang dicadangkan saat VM
a3-highgpu-8gtidak ada.
Mengatasi masalah ini
Untuk mengatasi masalah ini pada suatu tugas, tambahkan label dengan
nama goog-batch-skip-quota-check dan nilai true ke
kolom labels tingkat tugas.
Label ini menyebabkan Batch melewati verifikasi kuota resource project Anda sebelum mencoba membuat tugas.
Misalnya, untuk mencegah atau mengatasi masalah ini pada tugas skrip dasar yang dapat menggunakan reservasi, buat dan jalankan tugas dengan konfigurasi JSON berikut:
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello world from task ${BATCH_TASK_INDEX}"
}
}
]
},
"taskCount": 3
}
],
"allocationPolicy": {
"instances": [
{
VM_RESOURCES
}
],
},
"labels": {
"goog-batch-skip-quota-check": "true"
},
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
}
Ganti VM_RESOURCES dengan resource VM yang cocok dengan pemesanan yang Anda inginkan untuk digunakan oleh tugas.
Untuk mengetahui petunjuk selengkapnya, lihat Membuat dan menjalankan tugas yang dapat menggunakan VM yang dicadangkan dan Menentukan label kustom untuk tugas.
Job dapat gagal saat menentukan image OS VM Compute Engine (atau kustom) dengan kernel yang sudah tidak berlaku
Tugas dapat gagal jika menentukan image OS VM Compute Engine yang tidak memiliki versi kernel terbaru. (Masalah ini juga memengaruhi image kustom apa pun yang didasarkan pada image OS VM Compute Engine.) Pertimbangkan masalah ini jika Anda memiliki tugas yang gagal secara tidak terduga dan menentukan image OS VM Compute Engine atau image kustom serupa. Meskipun masalah ini dapat terjadi pada image Compute Engine apa pun (bahkan versi terbaru) kapan saja, kami mengamati bahwa masalah ini terutama terjadi pada image Compute Engine Debian.
Pelajari lebih lanjut masalah ini sebagai berikut:
- Jika Anda ingin mengetahui informasi selengkapnya tentang cara dan waktu masalah ini memengaruhi tugas, lihat Mengidentifikasi dan memahami masalah ini.
- Untuk mempelajari cara mencegah atau menyelesaikan masalah ini, lihat Mengatasi masalah ini.
Mengidentifikasi dan memahami masalah ini
Masalah ini disebabkan oleh versi kernel yang sudah tidak berlaku di image OS VM yang menyebabkan VM melakukan booting ulang. Jika tugas menentukan image OS VM yang bukan dari Batch atau berdasarkan image Batch, Batch akan menginstal paket yang diperlukan di VM tugas setelah VM tersebut dimulai. Paket yang diperlukan dapat bervariasi untuk berbagai tugas dan berubah seiring waktu, dan mungkin memerlukan image OS VM Anda untuk memiliki versi kernel terbaru. Masalah ini muncul saat mengupdate versi kernel memerlukan VM untuk di-reboot, yang menyebabkan penginstalan paket dan tugas gagal.
Masalah ini dapat terjadi kapan saja, meskipun Anda menggunakan versi terbaru image Compute Engine. Jika OS baru saja diupdate, terutama untuk update yang tidak dapat diprediksi seperti hotfix—update mendesak untuk kerentanan atau masalah kritis—maka image OS VM Compute Engine mungkin belum dapat bereaksi terhadap perubahan tersebut. Misalnya, kami telah mengamati bahwa, untuk
OS Debian, paket dengan awalan linux-headers- dapat dihapus secara tidak terduga
dari kernel oleh hotfix.
Untuk mengidentifikasi masalah ini, sebaiknya
lihat log untuk tugas guna
memeriksa error penginstalan yang terkait dengan image OS VM Anda. Misalnya, jika tugas Anda menggunakan image Compute Engine Debian atau image kustom serupa, sebaiknya periksa error terkait penginstalan paket linux-headers- dengan menentukan kueri berikut:
labels.job_uid="JOB_UID" AND severity="ERROR" AND textPayload:("failed" "apt" "install" "linux-headers-")
Ganti JOB_UID dengan ID unik (UID) tugas.
Untuk mendapatkan UID tugas, deskripsikan tugas.
Jika kueri ini menampilkan hasil, berarti masalah ini mungkin memengaruhi tugas Anda.
Mengatasi masalah ini
Untuk mencegah atau mengatasi masalah ini, sebaiknya Anda melakukan hal berikut:
Jika memungkinkan, gunakan gambar Batch atau gambar kustom berdasarkan gambar Batch, yang tidak terpengaruh oleh masalah ini.
Coba versi terbaru image Compute Engine pilihan Anda. Umumnya, versi image Compute Engine yang lebih baru lebih mungkin memiliki versi kernel terbaru daripada versi sebelumnya.
Pilih salah satu opsi berikut:
Coba OS lain atau buat image kustom. Misalnya, jika Debian 12 versi terbaru tidak berfungsi, Anda dapat mencoba membuat image kustom dari VM Compute Engine yang menjalankan Debian 12 dan yang telah Anda update untuk menggunakan versi kernel terbaru.
Jika tugas Anda gagal karena error terkait penginstalan paket
linux-headers-, maka Anda dapat mencoba menggunakan image OS VM dengan paketlinux-headers-yang sudah tidak berlaku. Untuk mengizinkan paketlinux-headers-yang sudah tidak berlaku, tambahkan label dengan namagoog-batch-allow-insecure-linux-headers-installationdan nilaitrueke kolomlabelstingkat tugas.Misalnya, untuk mengizinkan paket
linux-headers-yang sudah tidak berlaku untuk tugas skrip dasar yang menentukan image OS VM, buat dan jalankan tugas dengan konfigurasi JSON berikut:{ "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world from task ${BATCH_TASK_INDEX}" } } ] }, "taskCount": 3 } ], "allocationPolicy": { "instances": [ { "policy": { "bootDisk": { "image": "VM_OS_IMAGE_URI" } } } ] }, "labels": { "goog-batch-allow-insecure-linux-headers-installation": "true" }, "logsPolicy": { "destination": "CLOUD_LOGGING" } }Ganti
VM_OS_IMAGE_URIdengan URI image OS VM yang ingin Anda gunakan.Untuk mengetahui petunjuk selengkapnya, lihat Menentukan label kustom untuk tugas dan Menentukan image OS VM untuk tugas.
Untuk mengetahui informasi selengkapnya tentang image OS VM, lihat Ringkasan lingkungan OS untuk VM tugas.
Job yang menggunakan GPU dan image OS VM dengan kernel yang sudah usang mungkin gagal hanya saat menginstal driver secara otomatis
Masalah ini terkait erat dengan masalah sebelumnya, yaitu Pekerjaan mungkin gagal saat menentukan image OS VM Compute Engine (atau kustom) dengan kernel yang sudah tidak berlaku. Secara khusus, tugas yang menentukan image OS VM Compute Engine (atau kustom) tanpa kernel terbaru dan menggunakan GPU mungkin gagal hanya jika Anda mencoba menginstal driver GPU secara otomatis. Untuk tugas ini, Anda juga dapat mengatasi kegagalan hanya dengan menginstal driver GPU secara manual.
Untuk mengetahui informasi selengkapnya tentang masalah ini dan cara menyelesaikannya, lihat Pekerjaan mungkin gagal saat menentukan image OS VM Compute Engine (atau kustom) dengan kernel yang sudah tidak berlaku. Untuk mengetahui informasi selengkapnya tentang GPU, lihat Membuat dan menjalankan tugas yang menggunakan GPU.