Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bazen Azure Batch çözümünüzdeki görev ve uygulama hatalarını işlemeniz gerekebilir. Bu makalede farklı Batch hataları türleri ve yaygın sorunların nasıl çözüleceğini açıklanmaktadır.
Hata kodları
Batch'te görebileceğiniz bazı genel hata türleri şunlardır:
- Batch'e hiç ulaşmamış istekler için ağ hataları veya Batch yanıtının istemciye zamanında ulaşmadığı durumlarda ağ hataları.
- İç sunucu hataları. Bu hataların standart
5xxdurum kodu HTTP yanıtı vardır. - Sınırlama ile ilgili hatalar. Bu hatalar,
429üst bilgisine sahip503veyaRetry-afterdurum kodlu HTTP yanıtlarını içerir. -
4xxgibi hatalarAlreadyExistsveInvalidOperation. Bu hatalar kaynağın durum geçişi için doğru durumda olmadığını gösterir.
Belirli hata kodları hakkında ayrıntılı bilgi için bkz . Batch durumu ve hata kodları. Bu başvuru REST API, Batch hizmeti ve iş görevleri ile zamanlama için hata kodlarını içerir.
Uygulama hataları
Yürütme sırasında bir uygulama tanılama çıkışı üretebilir. Sorunları gidermek için bu çıkışı kullanabilirsiniz. Batch hizmeti, işlem düğümündeki görev dizinindeki stdout.txt ve stderr.txt dosyalarına standart çıktı ve standart hata çıkışı yazar. Daha fazla bilgi için bkz. Batch'te dosyalar ve dizinler.
Bu çıkış dosyalarını indirmek için Azure portalını veya Batch SDK'larından birini kullanın. Örneğin, sorun giderme amacıyla dosyaları almak için Batch .NET kitaplığında ComputeNode.GetNodeFile ve CloudTask.GetNodeFile kullanın.
Görev hataları
Görev hataları birkaç kategoriye ayrılır.
Ön işleme hataları
Bir görev başlatılamazsa, görev için bir ön işleme hatası ayarlanır. Ön işleme hataları şu durumlarda oluşabilir:
- Görevin kaynak dosyaları taşındı.
- Depolama hesabı artık kullanılamıyor.
- Dosyaların düğüme başarıyla kopyalanmasını engelleyen başka bir sorun oluştu.
Dosya yükleme hataları
Bir görev için belirttiğiniz dosyalar herhangi bir nedenle karşıya yüklenemezse, görev için bir dosya yükleme hatası ayarlanır. Dosya yükleme hataları şu durumlarda oluşabilir:
- Azure Depolama'ya erişmek için sağlanan paylaşılan erişim imzası (SAS) belirteci geçersiz.
- SAS belirteci, yazma yetkisi sağlamaz.
- Depolama hesabı artık kullanılamıyor.
- Dosyaların düğümden başarıyla kopyalanmasını engelleyen bir sorun daha oluştu.
Uygulama hataları
Görevin komut satırı tarafından belirtilen işlem de başarısız olabilir. Daha fazla bilgi için bkz . Görev çıkış kodları.
Uygulama hataları için Batch'i görevi otomatik olarak belirtilen sayıda yeniden deneyecek şekilde yapılandırın.
Kısıtlama hataları
Bir iş veya görevin yürütme süresi üst sınırını belirtmek için kısıtlamayı maxWallClockTime ayarlayın. İlerlemesi başarısız olan görevleri sonlandırmak için bu ayarı kullanın.
Görev maksimum süreyi aştığında:
- Görev tamamlandı olarak işaretlenir.
- Çıkış kodu olarak
0xC000013Aayarlanır. -
schedulingError alanı olarak
{ category:"ServerError", code="TaskEnded"}işaretlenir.
Görev çıkış kodları
Bir görev bir işlemi yürüttüğünde Batch, görevin çıkış kodu özelliğini işlemin dönüş koduyla doldurur. İşlem sıfır olmayan bir çıkış kodu döndürürse Batch hizmeti görevi başarısız olarak işaretler.
Batch hizmeti bir görevin çıkış kodunu belirlemez. İşlemin kendisi veya işlemin yürütüleceği işletim sistemi çıkış kodunu belirler.
Görev hataları veya kesintileri
Görevler bazen başarısız olabilir veya kesintiye uğrayabilir. Örneğin:
- Görev uygulamasının kendisi başarısız olabilir.
- Görevin üzerinde çalıştığı düğüm yeniden başlatılabilir.
- Yeniden boyutlandırma işlemi düğümü havuzdan kaldırabilir. Havuzun serbest bırakma politikası, görevlerin tamamlanmasını beklemeden düğümleri hemen kaldırırsa, bu eylem gerçekleşebilir.
Her durumda Batch, görevi başka bir düğümde yürütülmesi için otomatik olarak yeniden sıraya alabilir.
Aralıklı bir sorunun görevin yanıt vermeyi durdurmasına veya yürütülmesinin çok uzun sürmesine neden olması da mümkündür. Bir görev için maksimum yürütme aralığı ayarlayabilirsiniz. Bir görev aralığı aşarsa, Batch hizmeti görev uygulamasını kesintiye uğratır.
İşlem düğümlerine bağlanma
İşlem düğümünde uzaktan oturum açarak hata ayıklama ve sorun giderme işlemleri gerçekleştirebilirsiniz. Azure portalını kullanarak Windows düğümleri için bir Uzak Masaüstü Protokolü (RDP) dosyası indirin ve Linux düğümleri için Secure Shell (SSH) bağlantı bilgilerini alın. Bu bilgileri Batch .NET veya Batch Python API'lerini kullanarak da indirebilirsiniz.
RDP veya SSH aracılığıyla bir düğüme bağlanmak için önce düğümde bir kullanıcı oluşturun. Aşağıdaki yöntemlerden birini kullanın:
- Azure portalı
- Batch REST API: adduser
- Batch .NET API'si: ComputeNode.CreateComputeNodeUser
- Batch Python modülü: add_user
Gerekirse işlem düğümlerine erişimi yapılandırın veya devre dışı bırakın.
Sorun düğümlerini giderme
Batch istemci uygulamanız veya hizmetiniz, bir sorun düğümünü tanımlamak için başarısız görevlerin meta verilerini inceleyebilir. Havuzdaki her düğümün benzersiz bir kimliği vardır. Görev meta verileri, görevin çalıştığı düğümü içerir. Sorun düğümünü bulduklarından sonra, hatayı çözmek için aşağıdaki yöntemleri deneyin.
Düğümü yeniden başlat
Düğümü yeniden başlatmak bazen takılma veya kilitlenme işlemleri gibi gizli sorunları düzeltir. Havuzunuz bir başlangıç görevi kullanıyorsa veya işiniz bir iş hazırlama görevi kullanıyorsa, düğüm yeniden başlatıldığında bu görevler yürütülür.
- Batch REST API: yeniden başlatma
- Batch .NET API'si: ComputeNode.Reboot
Düğümü yeniden oluşturma
Düğümü yeniden görüntülemek işletim sistemini yeniden yükler. Yeniden görüntüleme işleminden sonra, görevleri başlatma ve iş hazırlama görevleri yeniden çalıştırılır.
- Batch REST API: reimage
- Batch .NET API'si: ComputeNode.Reimage
Düğümü havuzdan kaldır
Düğümün havuzdan kaldırılması bazen gereklidir.
- Batch REST API: removenodes
- Batch .NET API'si: PoolOperations
Düğümde görev zamanlamayı devre dışı bırak
Bir düğümde görev zamanlamasını devre dışı bırakmak düğümü etkili bir şekilde çevrimdışına alır. Batch, düğüme daha fazla görev atamaz. Ancak düğüm havuzda çalışmaya devam eder. Ardından başarısız olan görevin verilerini kaybetmeden hataları daha fazla araştırabilirsiniz. Düğüm ayrıca daha fazla görev hatasına neden olmaz.
Örneğin, düğümde görev zamanlamasını devre dışı bırakın. Ardından düğümde uzaktan oturum açın. Olay günlüklerini inceleyin ve diğer sorun gidermeleri yapın. Sorunları çözdükten sonra düğümü yeniden çevrimiçi duruma getirmek için görev zamanlamasını yeniden etkinleştirin.
- Batch REST API: enablescheduling
- Batch .NET API: ComputeNode.EnableScheduling
Düğümde çalışmakta olan Batch işleme görevlerini belirtmek için bu eylemleri kullanabilirsiniz. Örneğin, Batch .NET API'siyle görev zamanlamayı devre dışı bırakırken DisableComputeNodeSchedulingOption için bir sabit listesi değeri belirtebilirsiniz. Şunları yapmayı seçebilirsiniz:
- Çalışan görevleri sonlandır:
Terminate - Diğer düğümlerde zamanlamak için görevleri yeniden sıraya al:
Requeue - Eylemi gerçekleştirmeden önce devam eden görevlerin tamamlanmasına izin verin:
TaskCompletion
Hatadan sonra yeniden deneyin
Batch API'leri hatalarla ilgili sizi bilgilendirir. Yerleşik genel yeniden deneme işleyicisini kullanarak tüm API'leri yeniden deneyebilirsiniz. Bu seçeneği kullanmak en iyi yöntemdir.
Bir hatadan sonra yeniden denemeden önce birkaç saniye bekleyin. Çok sık veya çok hızlı bir şekilde yeniden denerseniz, yeniden deneme işleyicisi istekleri kısıtlar.