Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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
429atau503dengan headerRetry-after. -
4xxkesalahan sepertiAlreadyExistsdanInvalidOperation. 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:
- Portal Microsoft Azure
- REST API Batch: adduser
- Azure. COMPUTE.Batch API: BatchClient.CreateNodeUserAsync
- Modul Python Batch: add_user
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.
- Batch REST API: boot ulang
- Azure. COMPUTE.Batch API: BatchClient.RebootNodeAsync
Reimage node
Menginstansi ulang node akan menginstal ulang sistem operasi. Tugas mulai dan tugas persiapan pekerjaan dijalankan kembali setelah pemuatan ulang gambar terjadi.
- REST API Batch: reimage
- Azure.Compute.Batch API: BatchClient.ReimageNodeAsync
Menghapus simpul dari kumpulan
Menghapus simpul dari kumpulan terkadang diperlukan.
- REST API Batch: removenodes
- Azure. COMPUTE.Batch API: metode kumpulan BatchClient
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.
- REST API Batch: mengaktifkan penjadwalan
- Azure. Compute.Batch API: BatchClient.EnableNodeSchedulingAsync
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.