Kesalahan pekerjaan dan tugas Azure Batch
Berbagai kesalahan dapat terjadi saat Anda menambahkan, menjadwalkan, atau menjalankan pekerjaan dan tugas Azure Batch. Sangat mudah untuk mendeteksi kesalahan yang terjadi saat Anda menambahkan pekerjaan dan tugas. API, baris perintah, atau antarmuka pengguna biasanya segera mengembalikan kegagalan apa pun. Artikel ini membahas cara memeriksa dan menangani kesalahan yang terjadi setelah pekerjaan dan tugas dikirimkan.
Kegagalan pekerjaan
Pekerjaan adalah grup dari satu atau beberapa tugas, yang menentukan baris perintah yang akan dijalankan. Anda dapat menentukan parameter opsional berikut saat menambahkan pekerjaan. Parameter ini memengaruhi bagaimana pekerjaan dapat gagal.
JobConstraints. Anda dapat secara opsional menggunakan
maxWallClockTime
properti untuk mengatur jumlah waktu maksimum pekerjaan dapat aktif atau berjalan. Jika pekerjaan melebihimaxWallClockTime
, pekerjaan berakhir dengan properti yangterminateReason
diatur keMaxWallClockTimeExpiry
dalam JobExecutionInformation.JobPreparationTask. Anda dapat secara opsional menentukan tugas persiapan pekerjaan untuk dijalankan pada setiap simpul komputasi yang dijadwalkan untuk menjalankan tugas pekerjaan. Simpul menjalankan tugas persiapan pekerjaan sebelum pertama kali menjalankan tugas untuk pekerjaan tersebut. Jika tugas persiapan pekerjaan gagal, tugas tidak berjalan dan pekerjaan tidak selesai.
JobReleaseTask. Anda dapat secara opsional menentukan tugas rilis pekerjaan untuk pekerjaan yang memiliki tugas persiapan pekerjaan. Ketika pekerjaan dihentikan, tugas rilis pekerjaan berjalan pada setiap simpul kumpulan yang menjalankan tugas persiapan pekerjaan. Jika tugas rilis pekerjaan gagal, pekerjaan masih berpindah ke status
completed
.
Di portal Azure, Anda dapat mengatur parameter ini di manajer Pekerjaan, tugas persiapan dan rilis dan bagian Tingkat Lanjut dari layar Tambahkan pekerjaan Batch.
Properti pekerjaan
Periksa properti pekerjaan berikut di JobExecutionInformation untuk kesalahan:
Properti
terminateReason
menunjukkanMaxWallClockTimeExpiry
apakah pekerjaan melebihimaxWallClockTime
batasan pekerjaan yang ditentukan dan oleh karena itu pekerjaan dihentikan. Properti ini juga dapat diatur ketaskFailed
jika atribut pekerjaanonTaskFailure
diatur keperformExitOptionsJobAction
, dan tugas gagal dengan kondisi keluar yang menentukanjobAction
dariterminatejob
.Properti JobSchedulingError diatur jika telah terjadi kesalahan penjadwalan.
Tugas persiapan pekerjaan
Instans tugas persiapan pekerjaan berjalan pada setiap simpul komputasi saat pertama kali simpul menjalankan tugas untuk pekerjaan tersebut. Anda dapat menganggap tugas persiapan pekerjaan sebagai templat tugas, dengan beberapa instans dijalankan, hingga jumlah simpul dalam kumpulan. Periksa instans tugas persiapan pekerjaan untuk menentukan apakah ada kesalahan.
Anda dapat menggunakan JOB - List Preparation and Release Task Status API untuk mencantumkan status eksekusi semua instans tugas persiapan dan rilis pekerjaan untuk pekerjaan tertentu. Seperti halnya tugas lain, JobPreparationTaskExecutionInformation tersedia dengan properti seperti failureInfo
, exitCode
, dan result
.
Ketika tugas persiapan pekerjaan berjalan, tugas yang memicu tugas persiapan pekerjaan berpindah ke taskState dari preparing
. Jika tugas persiapan pekerjaan gagal, tugas pemicu kembali ke status active
dan tidak berjalan.
Jika tugas persiapan pekerjaan gagal, tugas pekerjaan pemicu tidak berjalan. Pekerjaan tidak selesai dan macet. Jika tidak ada pekerjaan lain dengan tugas yang dapat dijadwalkan, kumpulan mungkin tidak digunakan.
Tugas Rilis kerja
Instans tugas rilis pekerjaan berjalan ketika pekerjaan dihentikan pada setiap simpul yang menjalankan tugas persiapan pekerjaan. Periksa instans tugas rilis pekerjaan untuk menentukan apakah ada kesalahan.
Anda dapat menggunakan JOB - List Preparation and Release Task Status API untuk mencantumkan status eksekusi semua instans tugas persiapan dan rilis pekerjaan untuk pekerjaan tertentu. Seperti halnya tugas lain, JobReleaseTaskExecutionInformation tersedia dengan properti seperti failureInfo
, , exitCode
dan result
.
Jika satu atau beberapa tugas rilis pekerjaan gagal, pekerjaan masih dihentikan dan pindah ke status completed
.
Kegagalan tugas
Tugas pekerjaan dapat gagal karena alasan berikut:
- Baris perintah tugas gagal dan kembali dengan kode keluar bukan nol.
- Satu atau beberapa
resourceFiles
yang ditentukan untuk tugas tidak diunduh. - Satu atau beberapa
outputFiles
yang ditentukan untuk tugas tidak diunggah. - Waktu yang berlalu untuk tugas melebihi
maxWallClockTime
properti yang ditentukan dalam TaskConstraints.
Dalam semua kasus, periksa properti berikut untuk kesalahan dan informasi tentang kesalahan:
Properti TaskExecutionInformation memiliki beberapa properti yang menyediakan informasi tentang kesalahan. TaskExecutionResult menunjukkan apakah tugas gagal karena alasan apa pun, dan
exitCode
danfailureInfo
memberikan informasi selengkapnya tentang kegagalan tersebut.Tugas selalu berpindah ke
completed
TaskState, baik berhasil atau gagal.
Pertimbangkan dampak kegagalan tugas pada pekerjaan dan pada dependensi tugas apa pun. Anda dapat menentukan ExitConditions untuk mengonfigurasi tindakan untuk dependensi dan untuk pekerjaan tersebut.
- DependencyAction mengontrol apakah akan memblokir atau menjalankan tugas yang bergantung pada tugas yang gagal.
- JobAction mengontrol apakah tugas yang gagal menyebabkan pekerjaan dinonaktifkan, dihentikan, atau tidak berubah.
Baris perintah tugas
Baris perintah tugas tidak berjalan di bawah shell pada simpul komputasi, sehingga tidak dapat menggunakan fitur shell secara asli seperti ekspansi variabel lingkungan. Untuk memanfaatkan fitur tersebut, Anda harus memanggil shell di baris perintah. Untuk informasi selengkapnya, lihat Perluasan baris perintah variabel lingkungan.
Output baris perintah tugas menulis ke file stderr.txt dan stdout.txt . Aplikasi Anda mungkin juga menulis ke file log khusus aplikasi. Pastikan untuk menerapkan pemeriksaan kesalahan komprehensif agar aplikasi Anda segera mendeteksi dan mendiagnosis masalah.
Log tugas
Jika simpul kumpulan yang menjalankan tugas masih ada, Anda bisa mendapatkan dan melihat file log tugas. Beberapa API memungkinkan daftar dan mendapatkan file tugas, seperti File - Dapatkan Dari Tugas. Anda juga dapat mencantumkan dan menampilkan file log untuk tugas atau simpul dengan menggunakan portal Azure.
Di bagian atas halaman Gambaran Umum untuk simpul, pilih Unggah log batch.
Pada halaman Unggah log Batch, pilih Pilih kontainer penyimpanan, pilih kontainer Azure Storage untuk diunggah, lalu pilih Mulai unggah.
Anda dapat melihat, membuka, atau mengunduh log dari halaman kontainer penyimpanan.
File output
Karena kumpulan Batch dan simpul kumpulan sering bersifat sementara, dengan simpul terus ditambahkan dan dihapus, yang terbaik adalah menyimpan file log saat pekerjaan berjalan. File output tugas adalah cara yang mudah untuk menyimpan file log ke Azure Storage. Untuk informasi selengkapnya, lihat Pertahankan data tugas ke Azure Storage dengan API layanan Batch.
Pada setiap unggahan file, Batch menulis dua file log ke simpul komputasi, fileuploadout.txt dan fileuploaderr.txt. Anda dapat memeriksa file log ini untuk mempelajari lebih lanjut mengenai kegagalan tertentu. Jika unggahan file tidak dicoba, misalnya karena tugas itu sendiri tidak dapat dijalankan, file log ini tidak ada.
Langkah berikutnya
- Pelajari selengkapnya tentang tugas dan tugas Batch serta tugas persiapan dan rilis pekerjaan.
- Pelajari tentang kesalahan kumpulan Batch dan simpul.