Bagikan melalui


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. Kesalahan ini termasuk respons HTTP kode status 429 atau 503 dengan header Retry-after.
  • Kesalahan 4xx 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 Azure atau salah satu SDK Batch. Misalnya, untuk mengambil file untuk tujuan pemecahan masalah, gunakan ComputeNode.GetNodeFile dan CloudTask.GetNodeFile di pustaka Batch .NET.

Kesalahan tugas

Kesalahan tugas masuk ke dalam beberapa kategori.

Kesalahan prapemrosesan

Jika tugas gagal dimulai, kesalahan prapemrosesan diatur untuk tugas tersebut. Kesalahan pra-pemrosesan dapat terjadi jika:

  • File sumber daya tugas telah dipindahkan.
  • Akun penyimpanan tidak lagi tersedia.
  • Terjadi masalah lain yang mencegah keberhasilan penyalinan file ke node.

Kesalahan pengunggahan data

Jika file yang Anda tentukan untuk tugas gagal diunggah karena alasan apa pun, kesalahan pengunggahan file diatur untuk 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 memberikan izin tulis.
  • Akun penyimpanan tidak lagi tersedia.
  • Terjadi masalah lain yang mencegah keberhasilan penyalinan file dari node.

Kesalahan aplikasi

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

Untuk kesalahan aplikasi, konfigurasikan Batch agar secara otomatis mencoba kembali tugas hingga beberapa kali tertentu.

Kesalahan batasan

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

Saat tugas melebihi waktu maksimum:

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

Kode keluar tugas

Saat tugas menjalankan proses, Batch mengisi properti kode keluar tugas dengan kode pengembalian proses. Jika proses menampilkan 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 mungkin sesekali gagal atau terganggu. Contohnya:

  • Aplikasi tugas itu sendiri mungkin gagal.
  • Node tempat tugas dijalankan mungkin di-boot ulang.
  • Operasi mengubah ukuran mungkin menghapus node dari kumpulan. Tindakan ini mungkin terjadi jika kebijakan pembatalan alokasi kumpulan segera menghapus node tanpa menunggu tugas selesai.

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

Masalah yang terputus-putus juga dapat menyebabkan tugas berhenti merespons atau membutuhkan waktu terlalu lama untuk dieksekusi. Anda dapat mengatur interval eksekusi maksimum untuk suatu tugas. Jika tugas melebihi interval, layanan Batch 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 Azure untuk mengunduh file Protokol Desktop Jarak Jauh (RDP) untuk node Windows, dan dapatkan informasi koneksi Secure Shell (SSH) untuk node Linux. Anda juga dapat mengunduh informasi ini menggunakan Batch .NET atau Batch Python API.

Untuk terhubung ke node melalui RDP atau SSH, pertama buat pengguna di node. Pilih salah satu metode berikut:

Jika perlu, konfigurasikan atau nonaktifkan akses ke simpul komputasi.

Memecahkan masalah simpul masalah

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

Boot ulang node

Menghidupkan ulang node terkadang memperbaiki masalah laten, seperti proses yang macet atau crash. Jika kumpulan Anda menggunakan tugas awal, atau pekerjaan Anda menggunakan tugas persiapan pekerjaan, restart node akan menjalankan tugas-tugas ini.

Mencitrakan ulang node

Mencitrakan ulang node akan menginstal ulang sistem operasi. Mulai tugas dan tugas persiapan pekerjaan dijalankan ulang setelah mencitrakan ulang terjadi.

Menghapus node dari kumpulan

Menghapus node dari kumpulan terkadang diperlukan.

Menonaktifkan penjadwalan tugas pada node

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

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

Anda dapat menggunakan tindakan ini untuk menentukan tugas penanganan Batch yang saat ini berjalan pada node. Misalnya, saat Anda menonaktifkan penjadwalan tugas dengan Batch .NET API, Anda dapat menentukan nilai enum untuk DisableComputeNodeSchedulingOption. Anda dapat memilih untuk:

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

Percobaan kembali setelah kesalahan

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

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

Langkah berikutnya