Aracılığıyla paylaş


Azure Batch iş ve görev hataları

Azure Batch işleri ve görevleri eklediğinizde, zamanladığınızda veya çalıştırdığınızda çeşitli hatalar oluşabilir. İş ve görev eklediğinizde oluşan hataları algılamak kolaydır. API, komut satırı veya kullanıcı arabirimi genellikle hataları hemen döndürür. Bu makalede, işler ve görevler gönderildikten sonra oluşan hataları denetleme ve işleme işlemleri ele alınıyor.

İş hataları

İş, çalıştırılacak komut satırlarını belirten bir veya daha fazla görevden oluşan bir grupdur. bir iş eklerken aşağıdaki isteğe bağlı parametreleri belirtebilirsiniz. Bu parametreler işin nasıl başarısız olabileceğini etkiler.

  • JobConstraints. İsteğe bağlı olarak, bir işin etkin veya çalışır durumda olabileceği maksimum süreyi ayarlamak için özelliğini kullanabilirsiniz maxWallClockTime . İş maxWallClockTime değerini aşarsa, iş terminateReason içinde MaxWallClockTimeExpiry olarak ayarlanmış özelliği ile sonlandırılır.

  • JobPreparationTask. İsteğe bağlı olarak, bir iş görevini çalıştırmak üzere zamanlanan her işlem düğümünde çalıştırılacak bir iş hazırlama görevi belirtebilirsiniz. Düğüm, bir görev için ilk kez çalışmaya başlamadan önce görev hazırlama işlemini yürütür. İş hazırlama görevi başarısız olursa, görev çalışmaz ve iş tamamlanmaz.

  • JobReleaseTask. İsteğe bağlı olarak, iş hazırlama görevi olan işler için bir iş bırakma görevi belirtebilirsiniz. Bir iş sonlandırıldığında, iş bitirme görevi, iş hazırlama görevini çalıştırmış olan her havuz düğümünde çalışır. Eğer iş serbest bırakma görevi başarısız olursa, iş yine de completed duruma geçer.

Azure portalında bu parametreleri İş yöneticisi, hazırlık ve yayın görevleri ile Batch Add iş ekranının Gelişmiş bölümlerinde ayarlayabilirsiniz.

İş özellikleri

JobExecutionInformation içindeki aşağıdaki iş özelliklerini hatalar için denetleyin:

  • terminateReason özelliği, işin, iş kısıtlamalarında belirtilen MaxWallClockTimeExpiry'yi aşıp aşmadığını maxWallClockTime ve bu nedenle sonlandırıldığını gösterir. Bu özellik, işin taskFailed özniteliği onTaskFailure olarak ayarlanırsa ve bir görev performExitOptionsJobActionjobAction belirten bir çıkış koşuluyla başarısız olursa terminatejob olarak da ayarlanabilir.

  • Zamanlama hatası varsa JobSchedulingError özelliği ayarlanır.

İş hazırlama görevleri

Bir iş hazırlama görevi örneği, her işlem düğümünde, düğüm iş için ilk kez bir görev çalıştırdığında çalışır. İş hazırlama görevini, bir havuzdaki düğüm sayısına kadar birden çok örneğin çalıştırıldığı bir görev şablonu olarak düşünebilirsiniz. Hata olup olmadığını belirlemek için iş hazırlama görev örneklerini denetleyin.

Belirtilen bir işin tüm iş hazırlama ve bırakma görevlerinin yürütme durumunu listelemek için İş - Liste Hazırlama ve Bırakma Görevi Durumu API'sini kullanabilirsiniz. Diğer görevlerde olduğu gibi JobPreparationTaskExecutionInformation da , failureInfove exitCodegibi resultözelliklerle kullanılabilir.

Bir iş hazırlama görevi çalıştırıldığında, iş hazırlama görevini tetikleyen görev bir taskState durumuna preparing taşınır. İş hazırlama görevi başarısız olursa, tetikleyen görev duruma geri döner active ve çalışmaz.

İş hazırlama görevi başarısız olursa, tetiklenen iş görevi çalışmaz. İş tamamlanmadı ve takıldı. Zamanlanabilir görevleri olan başka iş yoksa havuz kullanılamayabilir.

İş yayımlama görevleri

İş hazırlama görevi çalıştıran her düğümde iş sonlandırılmakta olduğunda bir iş bırakma görevi örneği çalıştırılır. Hata olup olmadığını belirlemek için iş bırakma görev örneklerini denetleyin.

Belirtilen bir işin tüm iş hazırlama ve bırakma görevlerinin yürütme durumunu listelemek için İş - Liste Hazırlama ve Bırakma Görevi Durumu API'sini kullanabilirsiniz. Diğer görevlerde olduğu gibi JobReleaseTaskExecutionInformation da , failureInfove exitCodegibi resultözelliklerle kullanılabilir.

Bir veya daha fazla iş bırakma görevi başarısız olursa, iş yine sonlandırılır ve bir completed duruma geçer.

Görev hataları

İş görevleri aşağıdaki nedenlerle başarısız olabilir:

  • Görev komut satırı başarısız olur ve sıfır olmayan bir çıkış koduyla sonlanır.
  • Bir görev için belirtilen bir veya daha fazla resourceFiles dosya indirilmiyor.
  • Bir görev için belirtilen bir veya daha fazla outputFiles yüklenemiyor.
  • Görevin geçen süresi maxWallClockTime içinde belirtilen özelliği aşıyor.

Her durumda, hatalar ve hatalar hakkında bilgi için aşağıdaki özellikleri denetleyin:

  • TaskExecutionInformation özelliği, bir hata hakkında bilgi sağlayan birden çok özelliğe sahiptir. taskExecutionResult, görevin herhangi bir nedenle başarısız olup olmadığını belirtir ve exitCodefailureInfo hata hakkında daha fazla bilgi sağlar.

  • Görev başarılı veya başarısız olmasına bakılmaksızın her zaman completed taşınır.

Görev hatalarının iş üzerindeki ve tüm görev bağımlılıkları üzerindeki etkisini göz önünde bulundurun. Bağımlılıklara ve işe yönelik eylemleri yapılandırmak için ExitConditions belirtebilirsiniz.

  • DependencyAction , başarısız göreve bağlı görevlerin engellenip engellenmeyeceğini veya çalıştırılmayacağını denetler.
  • JobAction , başarısız görevin işin devre dışı bırakılmasına, sonlandırılmasına veya değişmesine neden olup olmadığını denetler.

Görev komut satırları

Görev komut satırları işlem düğümlerinde kabuk altında çalışmaz, bu nedenle ortam değişkeni genişletme gibi kabuk özelliklerini yerel olarak kullanamazlar. Bu tür özelliklerden yararlanmak için komut satırında kabuğu çağırmanız gerekir. Daha fazla bilgi için bkz. Ortam değişkenlerinin komut satırı genişletmesi.

Görev komut satırı çıktısı stderr.txt ve stdout.txt dosyalarına yazar. Uygulamanız, uygulamaya özgü günlük dosyalarına da yazabilir. Sorunları hemen algılamak ve tanılamak için uygulamanız için kapsamlı hata denetimi uyguladığınızdan emin olun.

Görev günlükleri

Bir görevi çalıştıran havuz düğümü hala varsa, görev günlüğü dosyalarını alabilir ve görüntüleyebilirsiniz. Dosya - Görevden Al gibi çeşitli API'ler görev dosyalarını listelemeye ve almaya izin verir. Ayrıca Azure portalını kullanarak bir görev veya düğüm için günlük dosyalarını listeleyebilir ve görüntüleyebilirsiniz.

  1. Bir nodun Genel Bakış sayfasının üst kısmında Toplu iş günlüklerini yükle'yi seçin.

  2. Toplu Günlükleri Karşıya Yükle sayfasında, Depolama kapsayıcısını seçin, karşıya yüklenecek Azure Depolama kapsayıcısını seçin ve ardından Karşıya yüklemeyi başlatın.

    Toplu iş günlüklerini karşıya yükle sayfasının ekran görüntüsü.

  3. Günlükleri depolama kapsayıcısı sayfasından görüntüleyebilir, açabilir veya indirebilirsiniz.

    Depolama kapsayıcısında görev günlüklerinin ekran görüntüsü.

Çıkış dosyaları

Batch havuzları ve havuz düğümleri genellikle geçici olduğundan ve düğümler sürekli eklenip silindiğinden, iş çalıştırıldığında günlük dosyalarını kaydetmek en iyisi olacaktır. Görev çıktı dosyaları, günlük dosyalarını Azure Depolama'ya kaydetmenin kullanışlı bir yoludur. Daha fazla bilgi için bkz Batch hizmeti API'si ile görev verilerini Azure Depolama'da kalıcı hale getirme.

Her dosya yüklemesinde Batch, işlem düğümüne iki günlük dosyası yazar: fileuploadout.txt ve fileuploaderr.txt. Belirli bir hata hakkında daha fazla bilgi edinmek için bu günlük dosyalarını inceleyebilirsiniz. Dosya karşıya yükleme girişiminde bulunulmadıysa, örneğin, görevin kendisi çalışmadığı için, bu günlük dosyaları mevcut değildir.

Sonraki Adımlar