Azure Batch kesalahan pekerjaan dan tugas

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 melebihi maxWallClockTime, pekerjaan berakhir dengan properti yang terminateReason diatur ke MaxWallClockTimeExpiry 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 pelepasan kerja untuk pekerjaan yang memiliki tugas persiapan kerja. 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 serta bagian Tingkat Lanjut dari layar Tambahkan pekerjaan Batch.

Properti pekerjaan

Periksa properti pekerjaan berikut di JobExecutionInformation untuk kesalahan:

  • Properti terminateReason menunjukkan MaxWallClockTimeExpiry apakah pekerjaan melebihi maxWallClockTime batasan pekerjaan yang ditentukan dan oleh karena itu pekerjaan dihentikan. Properti ini juga dapat diatur ke taskFailed jika atribut pekerjaan onTaskFailure diatur ke performExitOptionsJobAction, dan tugas gagal dengan kondisi keluar yang menentukan jobAction dari terminatejob.

  • Properti JobSchedulingError diatur jika telah terjadi kesalahan penjadwalan.

Tugas persiapan pekerjaan

Instans tugas persiapan kerja 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 kerja untuk menentukan apakah ada kesalahan.

Anda dapat menggunakan API Status Tugas Persiapan Dan Rilis Pekerjaan - Daftar 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 kerja berjalan, tugas yang memicu tugas persiapan pekerjaan berpindah ke taskState dari preparing. Jika tugas persiapan pekerjaan gagal, tugas pemicu kembali ke active status dan tidak berjalan.

Jika tugas persiapan kerja 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 kerja. Periksa instans tugas rilis pekerjaan untuk menentukan apakah ada kesalahan.

Anda dapat menggunakan API Status Tugas Persiapan Dan Rilis Pekerjaan - Daftar 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 dan exitCodefailureInfo memberikan informasi selengkapnya tentang kegagalan tersebut.

  • Tugas selalu berpindah ke completedTaskState, 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.

  1. Di bagian atas halaman Gambaran Umum untuk simpul, pilih Unggah log batch.

    Cuplikan layar halaman gambaran umum simpul dengan Unggah log batch disorot.

  2. Pada halaman Unggah log Batch , pilih Pilih kontainer penyimpanan, pilih kontainer Azure Storage untuk diunggah, lalu pilih Mulai unggah.

    Cuplikan layar halaman Unggah log batch.

  3. Anda dapat melihat, membuka, atau mengunduh log dari halaman kontainer penyimpanan.

    Cuplikan layar log tugas dalam 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 berjalan, file log ini tidak ada.

Langkah berikutnya