İş ve görev hatalarını Azure Batch

Azure Batch işleri ve görevleri eklediğinizde, zamanladığınızda veya çalıştırdığınızda çeşitli hatalar oluşabilir. İşleri ve görevleri 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. İş 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 en uzun süreyi ayarlamak için özelliğini kullanabilirsiniz maxWallClockTime . İş değerini aşarsa maxWallClockTimeJobExecutionInformation içinde olarak ayarlanmış MaxWallClockTimeExpiry özelliğiyle terminateReason sonlandırılır.

  • JobPreparationTask. İsteğe bağlı olarak, bir iş görevini çalıştırmak üzere zamanlanmış her işlem düğümünde çalıştırılacak bir iş hazırlama görevi belirtebilirsiniz. Düğüm, iş için bir görevi ilk kez çalıştırmadan önce iş hazırlama görevini çalıştırı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ş bırakma görevi bir iş hazırlama görevi çalıştıran her havuz düğümünde çalışır. bir iş bırakma görevi başarısız olursa, iş yine de bir completed duruma geçer.

Azure portal, bu parametreleri İş yöneticisi, hazırlama ve bırakma görevleri ile Toplu İş Ekle iş ekranının Gelişmiş bölümlerinde ayarlayabilirsiniz.

İş özellikleri

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

  • özelliği, terminateReason işin iş kısıtlamalarında belirtilen değeri maxWallClockTime aşıp aşmadiğini ve bu nedenle işin sonlandırıldığını gösterirMaxWallClockTimeExpiry. İşin özniteliği olarak ayarlanırsa performExitOptionsJobActionve bir görev öğesini belirten terminatejobjobAction bir çıkış koşuluyla başarısız olursa onTaskFailure bu özellik olarak da ayarlanabilirtaskFailed.

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

İş hazırlama görevleri

Bir iş hazırlama görevinin örneği, düğüm iş için bir görevi ilk kez çalıştırdığında her işlem düğümünde ç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ş için iş hazırlama ve bırakma görevlerinin tüm örneklerinin yürütme durumunu listelemek için İş - Liste Hazırlama ve Yayın Görevi Durumu API'sini kullanabilirsiniz. Diğer görevlerde olduğu gibi JobPreparationTaskExecutionInformation da , exitCodeve resultgibi failureInfoözelliklerle kullanılabilir.

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

Bir iş hazırlama görevi başarısız olursa, tetikleyen iş görevi çalışmaz. İş tamamlanamadı ve takıldı. Zamanlanabilir görevleri olan başka bir iş yoksa havuz kullanılmayabilir.

İş bırakma görevleri

İş hazırlama görevini çalıştıran her düğümde iş sonlandırıldığında bir iş bırakma görevinin örneği çalışır. Hata olup olmadığını belirlemek için iş bırakma görev örneklerini denetleyin.

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

Bir veya daha fazla iş bırakma görevi başarısız olursa, iş hala 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 döndürür.
  • Görev için belirtilen bir veya daha fazla resourceFiles kişi indirilmiyor.
  • Görev için belirtilen bir veya daha fazla outputFiles kişi karşıya yüklenemez.
  • Görevin geçen süresi TaskConstraintsmaxWallClockTime 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 TaskState'ecompleted taşınır.

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

  • DependencyAction , başarısız göreve bağımlı 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ın listelenmesine ve alınmasına izin verir. Ayrıca, Azure portal kullanarak bir görev veya düğüm için günlük dosyalarını listeleyebilir ve görüntüleyebilirsiniz.

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

    Toplu iş günlüklerini karşıya yükle vurgulanmış bir düğüme genel bakış sayfasının ekran görüntüsü.

  2. Batch günlüklerini karşıya yükle sayfasında Depolama kapsayıcısı seç'i, karşıya yüklenecek Azure Depolama kapsayıcısını ve ardından Karşıya yüklemeyi başlat'ı seçin.

    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 kısa ömürlü olduğundan ve düğümlerin sürekli olarak eklenip silindiği için, iş çalışırken günlük dosyalarını kaydetmek en iyisidir. Görev çıkış dosyaları, günlük dosyalarını Azure Depolama'ya kaydetmenin kullanışlı bir yoludur. Daha fazla bilgi için bkz . Batch hizmeti API'siyle görev verilerini Azure Depolama'da kalıcı hale getirmek.

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

Sonraki adımlar