Penanganan dan deteksi kesalahan di Azure Batch

Terkadang, Anda mungkin perlu menangani kegagalan tugas dan aplikasi dalam solusi Azure Batch Anda. Artikel ini menjelaskan berbagai jenis kesalahan Batch, dan cara mengatasi masalah umum.

Kode kesalahan

Beberapa jenis kesalahan umum yang mungkin Anda lihat di Batch adalah:

  • Kegagalan jaringan untuk permintaan yang tidak pernah mencapai Batch, atau kegagalan jaringan ketika respons Batch tidak mencapai klien tepat waktu.
  • Kesalahan server internal. Kesalahan ini memiliki respons HTTP kode status standar 5xx .
  • Kesalahan terkait pembatasan laju. Kesalahan ini termasuk respons HTTP kode status 429 atau 503 dengan header Retry-after.
  • 4xx kesalahan seperti AlreadyExists dan InvalidOperation. Kesalahan ini menunjukkan bahwa sumber daya tidak dalam status yang benar untuk transisi status.

Untuk informasi terperinci tentang kode kesalahan tertentu, lihat Status batch dan kode kesalahan. Referensi ini mencakup kode kesalahan untuk REST API, layanan Batch, dan untuk tugas dan penjadwalan pekerjaan.

Kegagalan aplikasi

Selama eksekusi, aplikasi mungkin menghasilkan output diagnostik. Anda dapat menggunakan output ini untuk memecahkan masalah. Layanan Batch menulis output standar dan output kesalahan standar ke file stdout.txt dan stderr.txt di direktori tugas pada simpul komputasi. Untuk informasi selengkapnya, lihat File dan direktori di Batch.

Untuk mengunduh file output ini, gunakan portal Microsoft Azure atau salah satu SDK Batch. Misalnya, untuk mengambil file guna keperluan pemecahan masalah, gunakan BatchClient.GetNodeFile dalam pustaka Azure.Compute.Batch.

Kesalahan tugas

Kesalahan tugas termasuk dalam beberapa kategori.

Kesalahan pra-pemrosesan

Jika tugas gagal dimulai, kesalahan pra-pemrosesan dicatat pada tugas tersebut. Kesalahan pra-pemrosesan dapat terjadi jika:

  • File sumber daya tugas telah dipindahkan.
  • Akun penyimpanan tidak lagi tersedia.
  • Masalah lain terjadi yang mencegah keberhasilan penyalinan file ke simpul.

Kesalahan saat mengunggah file

Jika file yang Anda tentukan untuk tugas gagal diunggah karena alasan apa pun, kesalahan pengunggahan file diberikan pada tugas tersebut. Kesalahan unggahan file dapat terjadi jika:

  • Token tanda tangan akses bersama (SAS) yang disediakan untuk mengakses Azure Storage tidak valid.
  • Token SAS tidak menyediakan izin tulis.
  • Akun penyimpanan tidak lagi tersedia.
  • Masalah lain terjadi yang mencegah keberhasilan penyalinan file dari simpul.

Kesalahan aplikasi

Proses yang ditentukan oleh baris perintah tugas juga dapat gagal. Untuk informasi selengkapnya, lihat Kode keluar tugas.

Untuk kesalahan aplikasi, konfigurasikan Batch untuk secara otomatis mencoba kembali tugas hingga jumlah waktu yang ditentukan.

Kesalahan batasan

Untuk menentukan durasi eksekusi maksimum untuk pekerjaan atau tugas, atur batasan maxWallClockTime . Gunakan pengaturan ini untuk mengakhiri tugas yang gagal maju.

Ketika tugas melebihi waktu maksimum:

  • Tugas ditandai sebagai selesai.
  • Kode keluar diatur ke 0xC000013A.
  • Bidang schedulingError ditandai sebagai { category:"ServerError", code="TaskEnded"}.

Kode keluaran tugas

Saat tugas menjalankan proses, Batch mengisi properti kode keluar tugas dengan kode keluaran proses. Jika proses mengembalikan kode keluar bukan nol, layanan Batch menandai tugas sebagai gagal.

Layanan Batch tidak menentukan kode keluar tugas. Proses itu sendiri, atau sistem operasi tempat proses dijalankan, menentukan kode keluar.

Kegagalan atau gangguan tugas

Tugas terkadang gagal atau terganggu. Contohnya:

  • Aplikasi tugas itu sendiri mungkin gagal.
  • Simpul tempat tugas sedang berjalan mungkin melakukan reboot.
  • Operasi perubahan ukuran mungkin menghapus simpul dari kolam. Tindakan ini mungkin terjadi jika kebijakan dealokasi kumpulan segera menghapus node tanpa menunggu tugas selesai.

Dalam semua kasus, Batch dapat secara otomatis mengantrekan ulang tugas untuk dieksekusi pada simpul lain.

Dimungkinkan juga masalah terputus-putus menyebabkan tugas berhenti merespons atau memerlukan waktu terlalu lama untuk dieksekusi. Anda dapat mengatur interval eksekusi maksimum untuk tugas. Jika tugas melebihi interval, layanan Batch akan menginterupsi aplikasi tugas.

Menyambungkan ke simpul komputasi

Anda dapat melakukan penelusuran kesalahan dan pemecahan masalah dengan masuk ke simpul komputasi dari jarak jauh. Gunakan portal Microsoft Azure untuk mengunduh file Protokol Desktop Jauh (RDP) untuk simpul Windows, dan dapatkan informasi koneksi Secure Shell (SSH) untuk simpul Linux. Anda juga dapat mengunduh informasi ini menggunakan Azure. COMPUTE.Batch atau Batch Python API.

Untuk menyambungkan ke simpul melalui RDP atau SSH, pertama-tama buat pengguna pada simpul. Pilih salah satu metode berikut:

Jika perlu, konfigurasikan atau nonaktifkan akses ke simpul komputasi.

Mengatasi masalah pada simpul

Aplikasi atau layanan klien Batch Anda dapat memeriksa metadata tugas yang gagal untuk mengidentifikasi simpul masalah. Setiap simpul dalam kumpulan memiliki ID unik. Metadata tugas menyertakan simpul tempat tugas dijalankan. Setelah Anda menemukan node masalah, coba metode berikut untuk mengatasi kegagalan.

Mulai Ulang Simpul

Menghidupkan ulang node terkadang memperbaiki masalah laten, seperti proses yang macet atau gagal. Jika kumpulan Anda menggunakan tugas mulai, atau pekerjaan Anda menggunakan tugas persiapan pekerjaan, simpul memulai ulang menjalankan tugas-tugas ini.

Reimage node

Menginstansi ulang node akan menginstal ulang sistem operasi. Tugas mulai dan tugas persiapan pekerjaan dijalankan kembali setelah pemuatan ulang gambar terjadi.

Menghapus simpul dari kumpulan

Menghapus simpul dari kumpulan terkadang diperlukan.

Menonaktifkan penjadwalan tugas pada simpul

Menonaktifkan penjadwalan tugas pada simpul secara efektif membuat simpul tersebut offline. Batch tidak lagi menetapkan tugas kepada simpul. Namun, simpul terus beroperasi di kumpulan. Anda kemudian dapat menyelidiki kegagalan lebih lanjut tanpa kehilangan data tugas yang gagal. Simpul juga tidak akan menyebabkan lebih banyak kegagalan tugas.

Misalnya, nonaktifkan penjadwalan tugas pada simpul. Kemudian, masuk ke simpul dari jarak jauh. Periksa log peristiwa, dan lakukan pemecahan masalah lainnya. Setelah Anda menyelesaikan masalah, aktifkan penjadwalan tugas lagi untuk membuat simpul kembali online.

Anda dapat menggunakan langkah-langkah ini untuk menentukan penanganan tugas Batch yang saat ini berjalan pada node. Misalnya, saat Anda menonaktifkan penjadwalan tugas dengan Azure. COMPUTE.Batch API, Anda dapat menentukan nilai enum untuk BatchNodeDisableSchedulingOption. Anda dapat memilih untuk:

  • Hentikan tugas yang sedang berjalan: Terminate
  • Mengantre ulang tugas untuk penjadwalan pada simpul lain: Requeue
  • Perbolehkan tugas yang sedang berjalan selesai sebelum melakukan tindakan: TaskCompletion

Coba lagi setelah kesalahan

API Batch memberi tahu Anda tentang kegagalan. Anda dapat mencoba kembali semua API menggunakan handler coba lagi global bawaan. Ini adalah praktik terbaik untuk menggunakan opsi ini.

Setelah kegagalan, tunggu beberapa detik sebelum mencoba kembali. Jika Anda mencoba kembali terlalu sering atau terlalu cepat, pengendali ulang akan membatasi permintaan.

Langkah berikutnya