Azure Batch iş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 . İş değerini aşarsamaxWallClockTime, iş JobExecutionInformation 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 zamanlanan 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ı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:

  • ö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. Bu özellik, işin onTaskFailure özniteliği olarak ayarlanırsa performExitOptionsJobActionve bir görev öğesini belirten jobAction terminatejobbir çıkış koşuluyla başarısız olursa 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ş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 , 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'ine 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. İş tamamlanmadı ve takıldı. Zamanlanabilir görevleri olan başka iş yoksa havuz kullanılamayabilir.

İş yayın görevleri

İş hazırlama görevi çalıştıran her düğümde iş sonlandırıldığında bir iş bırakma görevinin ö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 , exitCodeve resultgibi failureInfoö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 döndürü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 görev karşıya yüklenemez.
  • Görevin geçen süresi TaskConstraints 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 exitCode failureInfo 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'e 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 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'nin vurgulandığı düğüme genel bakış sayfasının ekran görüntüsü.

  2. Toplu günlükleri Karşıya Yükle sayfasında Depolama kapsayıcısı seç'i seçin, karşıya yüklenecek Azure Depolama kapsayıcısını seçin 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üğümler sürekli eklenip silindiğinden, iş çalıştırıldığında günlük dosyalarını kaydetmek en iyisidir. 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'siyle görev verilerini Azure Depolama'da kalıcı hale getirmek.

Batch, her dosya yüklemesinde işlem düğümüne fileuploadout.txt ve fileuploaderr.txt olmak ü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