Azure Batch en iyi yöntemleri

Bu makalede, Azure Batch hizmetini etkili bir şekilde kullanmaya yönelik en iyi yöntemler ve yararlı ipuçları ele alınmaktadır. Bu ipuçları, Batch çözümlerinizde performansı artırmanıza ve tasarım hatalarından kaçınmanıza yardımcı olabilir.

İpucu

Azure Batch'te güvenlik hakkında yönergeler için bkz . Batch güvenliği ve uyumluluğu için en iyi yöntemler.

Havuzlar

Havuzlar , Batch hizmetinde işleri yürütmek için kullanılacak işlem kaynaklarıdır. Aşağıdaki bölümlerde Batch havuzlarıyla çalışmaya yönelik öneriler sağlanır.

Havuz yapılandırması ve adlandırma

  • Havuz ayırma modu: Batch hesabı oluştururken iki havuz ayırma modu arasında seçim yapabilirsiniz: Batch hizmeti veya kullanıcı aboneliği. Çoğu durumda, Batch tarafından yönetilen aboneliklerde havuzların arka planda ayrıldığı varsayılan Batch hizmeti modunu kullanmanız gerekir. Alternatif Kullanıcı aboneliği modunda, bir havuz oluşturulduğunda Batch VM'leri ve diğer kaynaklar doğrudan aboneliğinizde oluşturulur. Kullanıcı aboneliği hesapları öncelikle senaryoların küçük ama önemli bir alt kümesini etkinleştirmek için kullanılır. Daha fazla bilgi için bkz . Kullanıcı aboneliği modu yapılandırması.

  • classic veya simplified düğüm iletişim modu: Havuzlar, klasik veya basitleştirilmiş iki düğüm iletişim modundan birinde yapılandırılabilir. Klasik düğüm iletişim modelinde Batch hizmeti işlem düğümleriyle iletişim başlatır ve işlem düğümleri de Azure Depolama ile iletişim kurmanızı gerektirir. Basitleştirilmiş düğüm iletişim modelinde işlem düğümleri Batch hizmetiyle iletişim başlatır. Gelen/giden bağlantıların kapsamının azalması ve temel işlem için Azure Depolama giden erişimi gerektirmemesi nedeniyle, basitleştirilmiş düğüm iletişim modelinin kullanılması önerilir. Batch hizmetinde gelecekteki bazı iyileştirmeler için basitleştirilmiş düğüm iletişim modeli de gerekir. Klasik düğüm iletişim modeli 31 Mart 2026'da kullanımdan kaldırılacaktır.

  • İş ve görev çalışma süresiyle ilgili dikkat edilmesi gerekenler: Öncelikle kısa çalışan görevlerden oluşan işleriniz varsa ve beklenen toplam görev sayısı küçükse, işin beklenen genel çalışma süresinin uzun kalmaması için her iş için yeni bir havuz ayırmayın. Düğümlerin ayırma süresi işin çalışma süresini azaltacaktır.

  • Birden çok işlem düğümü: Tek tek düğümlerin her zaman kullanılabilir olması garanti değildir. Yaygın olmasa da donanım hataları, işletim sistemi güncelleştirmeleri ve diğer sorunların bir konağı tek tek düğümlerin çevrimdışı olmasına neden olabilir. Batch iş yükünüz belirleyici ve garantili ilerleme gerektiriyorsa, birden çok düğüme sahip havuzlar ayırmanız gerekir.

  • Yaklaşan kullanım süresi sonu (EOL) tarihleri olan görüntüler: Yaklaşan Batch destek kullanım süresi sonu (EOL) tarihlerine sahip görüntülerden kaçınmanız kesinlikle önerilir. Bu tarihler API, PowerShell veya Azure CLI aracılığıyla ListSupportedImages bulunabilir. Havuzlarınıza ilişkin EOL tarihlerine ilişkin görünümünüzü düzenli aralıklarla yenilemek ve EOL tarihi gerçekleşmeden önce iş yüklerinizi geçirmek sizin sorumluluğunuzdadır. Belirli bir düğüm aracısı ile özel görüntü kullanıyorsanız, özel görüntünüzün türetildiği veya hizalandığı görüntü için Batch desteği kullanım süresi sonu tarihlerini izlediğinizden emin olun. Belirtilen batchSupportEndOfLife tarih olmayan bir görüntü, böyle bir tarihin Batch hizmeti tarafından henüz belirlenmediğini gösterir. Bir tarihin olmaması, ilgili görüntünün süresiz olarak desteklendiğini göstermez. Gelecekte herhangi bir zamanda bir EOL tarihi eklenebilir veya güncelleştirilebilir.

  • Yaklaşan kullanım süresi sonu (EOL) tarihlerine sahip VM SKU'ları: VM görüntülerinde olduğu gibi VM SKU'ları veya aileleri de Batch desteği kullanım süresi sonuna (EOL) ulaşabilir. Bu tarihler API, PowerShell veya Azure CLI aracılığıyla ListSupportedVirtualMachineSkus bulunabilir. Desteklenen uygun VM SKU'su ile yeni bir havuz oluşturarak iş yükünüzün EOL olmayan bir VM SKU'sunun geçişini planlayın. VM SKU'su için ilişkili batchSupportEndOfLife tarihin olmaması, belirli bir VM SKU'sunun süresiz olarak desteklendiğini göstermez. Gelecekte herhangi bir zamanda bir EOL tarihi eklenebilir veya güncelleştirilebilir.

  • Benzersiz kaynak adları: Toplu iş kaynakları (işler, havuzlar vb.) genellikle zaman içinde gelir ve gider. Örneğin, Pazartesi günü bir havuz oluşturabilir, Salı günü silebilir ve ardından Perşembe günü benzer bir havuz oluşturabilirsiniz. Oluşturduğunuz her yeni kaynağa daha önce kullanmadığınız benzersiz bir ad verilmelidir. GUID kullanarak (tüm kaynak adı olarak veya bir parçası olarak) veya kaynağın oluşturulduğu tarih ve saati kaynak adına ekleyerek benzersizlik oluşturabilirsiniz. Batch, gerçek kaynak kimliği insan dostu olmayan bir şey olsa bile kaynağa daha okunabilir bir ad verebilen DisplayName'i destekler. Benzersiz adlar kullanmak, günlüklerde ve ölçümlerde hangi kaynağın bir şey yaptığını ayırt etmenizi kolaylaştırır. Ayrıca, bir kaynak için destek talebi göndermeniz gerekirse belirsizliği de kaldırır.

  • Havuz bakımı ve hatası sırasında süreklilik: İşlerinizin havuzları dinamik olarak kullanmasını sağlamak en iyisidir. İşleriniz her şey için aynı havuzu kullanıyorsa, havuzda bir sorun olduğunda işlerin çalışmama olasılığı vardır. Bu ilke özellikle zamana duyarlı iş yükleri için önemlidir. Örneğin, her işi zamanlarken dinamik olarak bir havuz seçin veya oluşturun ya da iyi durumda olmayan bir havuzu atlayabileceğiniz havuz adını geçersiz kılmanın bir yolunu kullanın.

  • Havuz bakımı ve hatası sırasında iş sürekliliği: Bir havuzun istediğiniz boyuta kadar büyümemesinin birçok nedeni vardır, örneğin iç hatalar veya kapasite kısıtlamaları. Gerekirse işleri farklı bir havuzda (updatejob kullanarak farklı bir VM boyutuyla) yeniden hedefleyebileceğinizden emin olun. Hiçbir zaman silinmeyeceği ve hiçbir zaman değişmeyeceği beklentisiyle statik havuz kimliğine güvenmekten kaçının.

Havuz güvenliği

Yalıtım sınırı

Yalıtım amacıyla, senaryonuz işleri veya görevleri birbirinden yalıtma gerektiriyorsa, bunu ayrı havuzlarda yaparak yapın. Havuz, Batch'teki güvenlik yalıtımı sınırıdır ve varsayılan olarak iki havuz görünür değildir veya birbirleriyle iletişim kuramaz. Batch hesabının çalıştığı büyük ortam yalıtım gerektirmediği sürece ayrı Batch hesaplarını güvenlik yalıtımı aracı olarak kullanmaktan kaçının.

Batch Node Aracısı güncelleştirmeleri

Batch düğümü aracıları sıfır olmayan işlem düğümlerine sahip havuzlar için otomatik olarak yükseltilemez. Batch havuzlarınızın Batch düğümü aracısı için en son güvenlik düzeltmelerini ve güncelleştirmelerini aldığından emin olmak için havuzu sıfır işlem düğümüne yeniden boyutlandırmanız veya havuzu yeniden oluşturmanız gerekir. Yeni Batch düğümü aracısı sürümlerindeki değişiklikleri anlamak için Batch Node Aracısı sürüm notlarını izlemeniz önerilir. Güncelleştirmelerin ne zaman yayımlandığını düzenli olarak denetlemek, en son aracı sürümüne yükseltmeleri planlamanıza olanak tanır.

Havuzunuzu yeniden oluşturmadan veya yeniden boyutlandırmadan önce, Batch havuzunuzda veya işlem düğümlerinizde sorunlarla karşılaşıyorsanız hata ayıklama amacıyla düğüm aracısı günlüklerini indirmeniz gerekir. Bu işlem Düğümler bölümünde daha ayrıntılı olarak açıklanmıştır.

Not

Azure Batch'te güvenlik hakkında genel yönergeler için bkz . Batch güvenliği ve uyumluluğu için en iyi yöntemler.

İşletim sistemi güncelleştirmeleri

Batch havuzu için seçilen VM görüntüsünün yayımcı tarafından sağlanan en son güvenlik güncelleştirmeleriyle güncel olması önerilir. Bazı görüntüler, önyükleme sırasında (veya kısa bir süre sonra) otomatik paket güncelleştirmeleri gerçekleştirebilir. Bu, paket deposu güncelleştirmelerini alma (örneğin, apt update) veya StartTask gibi eylemler sırasında paketleri yükleme gibi belirli kullanıcı tarafından yönlendirilen eylemleri etkileyebilir.

Temel alınan Azure altyapısının havuz genelinde güncelleştirmeleri koordine etmesini sağlayan Batch havuzları için Otomatik İşletim Sistemi yükseltmesinin etkinleştirilmesi önerilir. Bu seçenek, görev yürütme için kesintisiz olacak şekilde yapılandırılabilir. Otomatik işletim sistemi yükseltmesi, Batch'in desteklediği tüm işletim sistemlerini desteklemez. Daha fazla bilgi için bkz. Sanal Makine Ölçek Kümeleri Otomatik İşletim Sistemi yükseltmesi Destek Matrisi. Windows işletim sistemleri için Batch havuzunda Otomatik İşletim Sistemi yükseltmesini kullanırken özelliğini virtualMachineConfiguration.windowsConfiguration.enableAutomaticUpdates etkinleştirmediğinizden emin olun.

Azure Batch, hizmetle birlikte kullanılmasına izin verilen görüntülerin en son güvenlik güncelleştirmelerine sahip olduğunu doğrulamaz veya garanti etmez. Görüntülerdeki güncelleştirmeler, Azure Batch'in değil, görüntünün yayımcısının görünümü altındadır. altında microsoft-azure-batchyayımlanan belirli görüntüler için, bu görüntülerin yukarı akış türetilmiş görüntüleriyle güncel tutulması garanti değildir.

Havuz ömrü ve faturalama

Havuz ömrü, havuz yapılandırmasına uygulanan ayırma yöntemine ve seçeneklere bağlı olarak değişebilir. Havuzlar herhangi bir noktada rastgele bir yaşam süresine ve değişen sayıda işlem düğümüne sahip olabilir. Havuzdaki işlem düğümlerini açıkça veya hizmet tarafından sağlanan özellikler (otomatik ölçeklendirme veya otomatik havuz) aracılığıyla yönetmek sizin sorumluluğunuzdadır.

  • Havuz rekreasyon: Havuzları günlük olarak silmekten ve yeniden oluşturmaktan kaçının. Bunun yerine yeni bir havuz oluşturun ve mevcut işlerinizi yeni havuza işaret eden şekilde güncelleştirin. Tüm görevler yeni havuza taşındıktan sonra eski havuzu silin.

  • Havuz verimliliği ve faturalama: Batch'in kendisi ek ücret ödemez. Ancak işlem, depolama, ağ ve Batch iş yükünüz için gerekli olabilecek diğer kaynaklar gibi kullanılan Azure kaynakları için ücretlendirilirsiniz. Durumundan bağımsız olarak havuzdaki her işlem düğümü için faturalandırılırsınız. Daha fazla bilgi için bkz . Azure Batch için maliyet analizi ve bütçeler.

  • Kısa ömürlü işletim sistemi diskleri: Sanal Makine Yapılandırma havuzları, yönetilen disklerle ilişkili ek maliyetleri önlemek için VM önbelleğinde veya geçici SSD'de işletim sistemi diski oluşturan kısa ömürlü işletim sistemi disklerini kullanabilir.

Havuz ayırma hataları

Havuz ayırma hataları, ilk ayırma veya sonraki yeniden boyutlandırmalar sırasında herhangi bir noktada oluşabilir. Bu hatalar, bir bölgedeki geçici kapasite tükenmesi veya Batch'in bağlı olduğu diğer Azure hizmetlerindeki hatalardan kaynaklanabilir. Çekirdek kotanız bir garanti değil, bir sınırdır.

Planlanmamış kapalı kalma süresi

Batch havuzlarının Azure'da kapalı kalma süresi olaylarıyla karşılaşması mümkündür. Sorunların ortaya çıkabileceğini anlamak ve iş akışınızı yeniden yürütmelere dayanıklı olacak şekilde geliştirmeniz gerekir. Düğümler başarısız olursa Batch otomatik olarak sizin yerinize bu işlem düğümlerini kurtarmayı dener. Bu kurtarma, geri yüklenen düğümde veya farklı, kullanılabilir bir düğümde çalışan tüm görevlerin yeniden zamanlanması tetiklenebilir. Kesilen görevler hakkında daha fazla bilgi edinmek için bkz . Yeniden denemeler için tasarlama.

Özel görüntü havuzları

Sanal Makine Yapılandırmasını kullanarak bir Azure Batch havuzu oluşturduğunuzda, havuzdaki her işlem düğümü için işletim sistemini sağlayan bir VM görüntüsü belirtirsiniz. Havuzu desteklenen bir Azure Market görüntüsüyle veya Azure İşlem Galerisi görüntüsüyle özel görüntü oluşturabilirsiniz. Özel görüntü havuzu oluşturmak için yönetilen görüntü de kullanabilirsiniz ancak mümkün olduğunda Azure İşlem Galerisi'ni kullanarak özel görüntüler oluşturmanızı öneririz. Azure İşlem Galerisi'ni kullanmak havuzları daha hızlı sağlamanıza, daha büyük miktarlarda VM'yi ölçeklendirmenize ve VM'leri sağlarken güvenilirliği artırmanıza yardımcı olur.

Üçüncü taraf resimleri

Havuzlar, Azure Market yayımlanan üçüncü taraf görüntüleri kullanılarak oluşturulabilir. Kullanıcı aboneliği modu Batch hesaplarıyla, belirli üçüncü taraf görüntüleriyle havuz oluştururken "Market satın alma uygunluğu denetimi nedeniyle ayırma başarısız oldu" hatasını görebilirsiniz. Bu hatayı çözmek için görüntünün yayımcısı tarafından ayarlanan koşulları kabul edin. Azure PowerShell veya Azure CLI kullanarak bunu yapabilirsiniz.

Kapsayıcı havuzları

Sanal ağ ile bir Batch havuzu oluşturduğunuzda, belirtilen sanal ağ ile varsayılan Docker köprüsü arasında etkileşim yan etkileri olabilir. Docker, varsayılan olarak alt ağ belirtimine 172.17.0.0/16sahip bir ağ köprüsü oluşturur. Docker ağ köprüsü ile sanal ağınız arasında çakışan IP aralıkları olmadığından emin olun.

Docker Hub, görüntü çekme sayısını sınırlar. İş yükünüzün Docker Hub tabanlı görüntüler için yayımlanan hız sınırlarını aşmadığından emin olun. Azure Container Registry'nin doğrudan kullanılması veya ACR'de Yapıt önbelleğinden yararlanması önerilir.

Azure bölge bağımlılığı

Zamana duyarlı veya üretim iş yükünüz varsa tek bir Azure bölgesine güvenmemelisiniz. Nadir olsa da, bölgenin tamamını etkileyebilecek sorunlar vardır. Örneğin, işlemenizin belirli bir zamanda başlaması gerekiyorsa, başlangıç zamanından önce birincil bölgenizdeki havuzun ölçeğini artırmayı göz önünde bulundurun. Bu havuz ölçeği başarısız olursa, yedekleme bölgesindeki (veya bölgelerindeki) bir havuzun ölçeğini artırmaya geri dönebilirsiniz.

Farklı bölgelerdeki birden çok hesaptaki havuzlar, başka bir havuzla ilgili bir sorun olması durumunda hazır, kolay erişilebilir bir yedekleme sağlar. Daha fazla bilgi için bkz . Uygulamanızı yüksek kullanılabilirlik için tasarlama.

İşler

İş, yüzlerce, binlerce, hatta milyonlarca görev içerecek şekilde tasarlanmış bir kapsayıcıdır. İş oluştururken bu yönergeleri izleyin.

Daha az iş, daha fazla görev

Tek bir görevi çalıştırmak için iş kullanmak verimsizdir. Örneğin, her biri 10 görev içeren 100 iş oluşturmak yerine 1.000 görev içeren tek bir işi kullanmak daha verimlidir. 1.000 iş kullandıysanız, her birinin en az verimli, en yavaş ve en pahalı yaklaşım olan tek bir görevi vardır.

Aynı anda etkin binlerce iş gerektiren bir Batch çözümü tasarlamaktan kaçının. Görevler için kota yoktur, bu nedenle mümkün olduğunca az iş altında birçok görevi yürütmek işinizi ve iş zamanlama kotalarınızı verimli bir şekilde kullanır.

İş ömrü

Batch işinin süresi, sistemden silinene kadar süresizdir. Durumu, zamanlama için daha fazla görev kabul edip etmeyeceğini belirtir.

İş, açıkça sonlandırılmadığı sürece otomatik olarak tamamlanmış duruma taşınmaz. Bu eylem, onAllTasksComplete özelliği veya maxWallClockTime aracılığıyla otomatik olarak tetiklenebilir.

Varsayılan etkin iş ve iş zamanlama kotası vardır. Tamamlanmış durumdaki işler ve iş zamanlamaları bu kotaya uygun sayılmaz.

Tamamlanmış durumda olsa bile artık gerekli olmayan işleri silin. Tamamlanan işler etkin iş kotasına göre sayılmaz, ancak tamamlanan işleri düzenli aralıklarla temizlemek yararlı olur. Örneğin, toplam iş sayısı daha küçük bir küme olduğunda (isteğe uygun filtreler uygulansa bile) işleri listelemek daha verimli olur.

Görevler

Görevler , bir işi oluşturan tek tek çalışma birimleridir. Görevler kullanıcı tarafından gönderilir ve Batch tarafından işlem düğümlerine zamanlanır. Aşağıdaki bölümler, görevlerinizi sorunları işleyecek ve verimli bir şekilde gerçekleştirecek şekilde tasarlamaya yönelik öneriler sağlar.

Görev verilerini kaydetme

İşlem düğümleri doğası gereği kısa ömürlü olur. Otomatik biriktirme ve otomatik ölçeklendirme gibi toplu iş özellikleri, düğümlerin kaybolmasını kolaylaştırabilir. Düğümler havuzdan ayrıldığında (yeniden boyutlandırma veya havuz silme nedeniyle), bu düğümler üzerindeki tüm dosyalar da silinir. Bu davranış nedeniyle, bir görevin çıktısını üzerinde çalıştığı düğümden ve tamamlanmadan önce dayanıklı bir depoya taşıması gerekir. Benzer şekilde, bir görev başarısız olursa, başarısızlığı dayanıklı bir depoya tanılamak için gereken günlükleri taşıması gerekir.

Batch, OutputFiles aracılığıyla ve çeşitli paylaşılan dosya sistemleriyle verileri karşıya yüklemek için Azure Depolama'yı tümleştirmiştir veya karşıya yüklemeyi görevlerinizde kendiniz gerçekleştirebilirsiniz.

Görev ömrünü yönetme

Artık gerekli olmadığında görevleri silin veya retentionTime görev kısıtlaması ayarlayın. bir retentionTime ayarlanırsa Batch, süresi dolduğunda retentionTime görev tarafından kullanılan disk alanını otomatik olarak temizler.

Görevleri silmek iki şeyi gerçekleştirir:

  • İş içinde birikmiş görevlere sahip olmadığınızı güvence altına alır. Bu eylem, Tamamlanan görevler arasında filtreleme yapmanız gerekeceği için ilgilendiğiniz görevi bulmakta zorluk çekmemeye yardımcı olur.
  • Düğümdeki ilgili görev verilerini temizler (sağlanan retentionTime henüz isabet edilmemiştir). Bu eylem, düğümlerinizin görev verileriyle dolmamasını ve disk alanının dolmasını sağlamaya yardımcı olur.

Not

Batch'e yeni gönderilen görevler için DeleteTask API çağrısının geçerlilik kazanması 10 dakika kadar sürer. Geçerlilik kazanmadan önce diğer görevlerin zamanlanması engellenebilir. Bunun nedeni Batch Scheduler'ın yeni silinen görevleri zamanlamayı denemesidir. Gönderildikten kısa bir süre sonra bir görevi silmek istiyorsanız, lütfen bunun yerine görevi sonlandırın (sonlandırma görevi isteği hemen geçerli olacağından). Ardından 10 dakika sonra görevi silin.

Koleksiyonda çok sayıda görev gönderme

Görevler tek tek veya koleksiyonlarda gönderilebilir. Ek yükü ve gönderim süresini azaltmak için görevleri toplu gönderim yaparken bir kerede 100'e kadar olan koleksiyonlarda görev gönderin.

Düğüm başına en fazla görevi uygun şekilde ayarlama

Batch, düğümlerde fazla abonelik görevlerini destekler (düğümde çekirdek bulunandan daha fazla görev çalıştırma). Görevlerinizin havuzunuzdaki düğümler için doğru boyutta olduğundan emin olmak size bağlıdır. Örneğin, her biri %25 CPU kullanımını bir düğümde (ile taskSlotsPerNode = 8bir havuzda) tüketen sekiz görev zamanlamayı denerseniz, düzeyi düşürülmüş bir deneyim yaşayabilirsiniz.

Yeniden denemeler ve yeniden yürütme için tasarım

Görevler Batch tarafından otomatik olarak yeniden denenebilir. İki tür yeniden deneme vardır: kullanıcı tarafından denetlenen ve iç. Kullanıcı tarafından denetlenen yeniden denemeler, görevin maxTaskRetryCount değeriyle belirtilir. Görevde belirtilen bir program sıfır olmayan bir çıkış koduyla çıktığında, görev değerine maxTaskRetryCountkadar yeniden denenecek.

Nadir olsa da, işlem düğümündeki iç durumu güncelleştirememe veya görev çalışırken düğümdeki bir hata gibi hatalar nedeniyle bir görev dahili olarak yeniden denenebilir. Görev, mümkünse, görevden vazgeçmeden ve batch tarafından yeniden zamanlanacak görevi ertelemeden önce (potansiyel olarak farklı bir işlem düğümünde) bir iç sınıra kadar aynı işlem düğümünde yeniden denenecektir.

Görevlerinizi ayrılmış veya Spot düğümlerde yürütürken tasarım farklılıkları yoktur. Bir görevin Spot düğümde çalıştırılırken önceden damgalanması veya ayrılmış düğümdeki bir hata nedeniyle kesintiye uğraması farketmeksizin, görevi hataya dayanacak şekilde tasarlayarak her iki durum da azaltılır.

Dayanıklı görevler oluşturma

Görevler hataya dayanacak ve yeniden denemeye uyum sağlamak için tasarlanmalıdır. Bu ilke özellikle uzun süre çalışan görevler için önemlidir. Görevlerinizin birden çok kez çalıştırıldığında bile aynı, tek sonucu oluşturduğundan emin olun. Bu sonuca ulaşmanın bir yolu, görevlerinizi "hedef arama" yapmaktır. Bir diğer yol da görevlerinizin bir kez etkili olduğundan emin olmaktır (görevler kaç kez çalıştırılırsa çalıştırılırsa çalıştırsın aynı sonuca sahip olur).

Yaygın bir örnek, dosyaları bir işlem düğümüne kopyalama görevidir. Basit bir yaklaşım, her çalıştığında belirtilen tüm dosyaları kopyalayan ve verimsiz olan ve hataya dayanacak şekilde derlenmemiş bir görevdir. Bunun yerine, dosyaların işlem düğümünde olduğundan emin olmak için bir görev oluşturun; zaten var olan dosyaları yeniden kopyalamayan bir görev. Bu şekilde, görev kesintiye uğrarsa kaldığınız yerden devam eder.

Kısa yürütme süresinden kaçının

Yalnızca bir ile iki saniye arasında çalışan görevler ideal değildir. Tek bir görevde önemli miktarda çalışma yapmaya çalışın (en az 10 saniye, saat veya günlere kadar). Her görev bir dakika (veya daha fazla) boyunca yürütülüyorsa, genel işlem süresinin bir bölümü olarak zamanlama ek yükü küçüktür.

Windows düğümlerinde kısa görevler için havuz kapsamını kullanma

Batch düğümlerinde bir görevi zamanlarken, görev kapsamıyla mı yoksa havuz kapsamıyla mı çalıştırabileceğinizi seçebilirsiniz. Görev yalnızca kısa bir süre çalışacaksa, görev için otomatik kullanıcı hesabını oluşturmak için gereken kaynaklar nedeniyle görev kapsamı verimsiz olabilir. Daha fazla verimlilik için bu görevleri havuz kapsamına ayarlamayı göz önünde bulundurun. Daha fazla bilgi için bkz . Görevi havuz kapsamına sahip otomatik kullanıcı olarak çalıştırma.

Düğümler

İşlem düğümü, uygulamanızın iş yükünün bir bölümünü işlemeye ayrılmış bir Azure sanal makinesi (VM) veya bulut hizmeti VM'dir. Düğümlerle çalışırken bu yönergeleri izleyin.

Görevleri başlatma: yaşam süresi ve tek bir kez etkililik

Diğer görevlerde olduğu gibi düğüm başlatma görevi de aynı etkiye sahip olmalıdır. İşlem düğümü yeniden başlatıldığında veya Batch aracısı yeniden başlatıldığında başlangıç görevleri yeniden çalıştırılır. Bir kez etkili bir görev, birden çok kez çalıştırıldığında tutarlı bir sonuç üreten görevdir.

Başlangıç görevleri uzun süre çalışmamalı veya işlem düğümünün ömrüyle birleştirilmemelidir. Hizmet veya hizmet benzeri programları doğası gereği başlatmanız gerekiyorsa, bu programların Linux veya Windows Hizmetleri gibi systemd işletim sistemi tesisleri tarafından başlatılmasını ve yönetilmesini sağlayan bir başlangıç görevi oluşturun. Bu programlar daha önce hizmet olarak yüklenmişse, başlangıç görevinin sonraki yürütmesi düzgün şekilde işlenecek şekilde başlatma görevi yine de bir kez etkili olarak oluşturulmalıdır.

İpucu

Batch başlangıç görevinizi yeniden çalıştırdığında, başlangıç görevi dizinini silmeyi ve yeniden oluşturmayı dener. Batch başlangıç görevi dizinini yeniden oluşturamazsa işlem düğümü başlangıç görevini başlatamaz.

Bu hizmetler düğümdeki Batch tarafından yönetilen dizinlerdeki hiçbir dosyada dosya kilitleri almamalıdır, aksi takdirde Batch dosya kilitleri nedeniyle bu dizinleri silemez. Örneğin, hizmetin başlatılmasını doğrudan başlangıç görevi çalışma dizininden yapılandırmak yerine, dosyaları bir kez etkili bir şekilde başka bir yere kopyalayın. Ardından işletim sistemi olanaklarını kullanarak hizmeti bu konumdan yükleyin.

Yalıtılmış düğümler

Uyumluluk veya mevzuat gereksinimleri olan iş yükleri için yalıtılmış VM boyutlarını kullanmayı göz önünde bulundurun. Sanal makine yapılandırma modunda desteklenen yalıtılmış boyutlar şunlardır: Standard_E80ids_v4, Standard_M128ms, Standard_F72s_v2, Standard_G5, Standard_GS5, ve Standard_E64i_v3. Yalıtılmış VM boyutları hakkında daha fazla bilgi için bkz . Azure'da sanal makine yalıtımı.

Windows'ta dizin birleşimleri oluşturmaktan kaçının

Bazen dizin sabit bağlantıları olarak da adlandırılan dizin birleşimlerinin, görev ve iş temizleme sırasında ele almak zordur. Sabit bağlantılar yerine symlinks (geçici bağlantılar) kullanın.

Geçici diskler ve AZ_BATCH_NODE_ROOT_DIR

Batch, görev yürütmeyle ilgili meta verileri ve bu geçici disk üzerindeki her görev yürütmesinin yapıtlarını depolamak için Batch, Batch uyumlu VM boyutları için VM geçici disklerine dayanır. Bu geçici disk bağlama noktalarına veya dizinlerine örnek olarak şunlar verilebilir: /mnt/batch, /mnt/resource/batchve D:\batch\tasks. Bu bağlama noktalarını ve dizinlerini veya üst dizinleri değiştirme, yeniden bağlama, birleşim, bağlantı oluşturma veya başka bir şekilde yeniden yönlendirme desteklenmez ve tutarsızlığa yol açabilir. Daha fazla disk alanı gerekiyorsa, gereksinimlerinizi karşılayan geçici disk alanına sahip bir VM boyutu veya ailesi kullanmayı veya veri diskleri eklemeyi göz önünde bulundurun. Daha fazla bilgi için işlem düğümleri için veri diskleri ekleme ve hazırlama hakkındaki sonraki bölüme bakın.

Veri disklerini ekleme ve hazırlama

Her bir işlem düğümü, Batch havuzu örneğinin bir parçası olarak belirtilirse, tam olarak aynı veri diski belirtimine sahiptir. Batch havuzlarına yalnızca yeni veri diskleri eklenebilir. İşlem düğümlerine eklenen bu veri diskleri otomatik olarak bölümlenmez, biçimlendirilmemiş veya bağlanmaz. Bu işlemleri başlangıç görevinizin bir parçası olarak gerçekleştirmek sizin sorumluluğunuzdadır. Bu başlangıç görevleri, bir kez etkili olacak şekilde oluşturulmalıdır. İşlem düğümlerinde başlangıç görevlerinin yeniden yürütülmesi mümkündür. Başlangıç görevi bir kez etkili değilse, veri disklerinde olası veri kaybı oluşabilir.

İpucu

Linux'ta bir veri diski bağlanırken, disk bağlama noktası veya /mnt/resourcegibi /mnt Azure geçici bağlama noktaları altında iç içe yerleştiriliyorsa bağımlılık yarışlarının kullanılmaması için dikkatli olunmalıdır. Örneğin, bu bağlamalar işletim sistemi tarafından otomatik olarak gerçekleştiriliyorsa, geçici diskin takılı olması ile veri disklerinizin üst disk altına takılması arasında bir yarış olabilir. Uygun bağımlılıkların, veri diski hazırlama betiğinizin bir parçası olarak veri diskinin başlangıç görevine bağlanmasını erteleme veya erteleme gibi systemd kullanılabilir tesisler tarafından uygulanmasını sağlamak için adımlar atılmalıdır.

Linux Batch havuzlarında veri disklerini hazırlama

Linux'taki Azure veri diskleri blok cihazları olarak sunulur ve tipik sd[X] bir tanımlayıcı atanır. Bu etiketler önyükleme zamanında dinamik olarak atandığından ve ilk ve sonraki önyüklemeler arasında tutarlı olacağı garanti edilmediğinden statik sd[X] atamalara güvenmemelisiniz. ekli disklerinizi içinde /dev/disk/azure/scsi1/sunulan eşlemeler aracılığıyla tanımlamanız gerekir. Örneğin, AddPool API'sinde veri diskiniz için LUN 0 belirttiyseniz, bu disk olarak /dev/disk/azure/scsi1/lun0bildirimde bulunur. Örneğin, bu dizini listelediyseniz şunları görebilirsiniz:

user@host:~$ ls -l /dev/disk/azure/scsi1/
total 0
lrwxrwxrwx 1 root root 12 Oct 31 15:16 lun0 -> ../../../sdc

Başvuruyu hazırlık betiğinizdeki eşlemeye sd[X] geri çevirmeniz gerekmez, bunun yerine doğrudan cihaza başvurun. Bu örnekte, bu cihaz olacaktır /dev/disk/azure/scsi1/lun0. Bu kimliği doğrudan fdisk, mkfsve iş akışınız için gereken diğer araçlara sağlayabilirsiniz. Alternatif olarak, ile kullanarak blkid diskin UUID'sini eşleyebilirsinizlsblk.

Veri disklerini ve /etc/fstab seçenekleri bulmanın alternatif yöntemleri de dahil olmak üzere Linux'taki Azure veri diskleri hakkında daha fazla bilgi için bu makaleye bakın. Yönteminizi üretim kullanımına yükseltmeden önce İpucu notu tarafından açıklandığı gibi bağımlılık veya yarış olmadığından emin olun.

Windows Batch havuzlarında veri disklerini hazırlama

Batch Windows işlem düğümlerine eklenen Azure veri diskleri bölümlenmemiş ve biçimlendirilmemiş olarak sunulur. Başlangıç görevinizin bir parçası olarak eyleme geçmek için diskleri bölümlere RAW göre listelemeniz gerekir. Bu bilgiler PowerShell cmdlet'i Get-Disk kullanılarak alınabilir. Örnek olarak şunları görebilirsiniz:

PS C:\Windows\system32> Get-Disk

Number Friendly Name Serial Number                    HealthStatus         OperationalStatus      Total Size Partition
                                                                                                             Style
------ ------------- -------------                    ------------         -----------------      ---------- ----------
0      Virtual HD                                     Healthy              Online                      30 GB MBR
1      Virtual HD                                     Healthy              Online                      32 GB MBR
2      Msft Virtu...                                  Healthy              Online                      64 GB RAW

Burada 2 numaralı disk, bu işlem düğümüne bağlı başlatılmamış veri diskidir. Bu diskler daha sonra iş akışınız için gerektiği şekilde başlatılabilir, bölümlenebilir ve biçimlendirilebilir.

Örnek PowerShell betikleri de dahil olmak üzere Windows'daki Azure veri diskleri hakkında daha fazla bilgi için bu makaleye bakın. Üretim kullanımına yükseltmeden önce örnek betiklerin aynı anda geçerli olup olmadığının doğrulandığından emin olun.

Batch aracı günlüklerini toplama

Bir düğümün veya bir düğümde çalışan görevlerin davranışıyla ilgili bir sorun fark ederseniz, söz konusu düğümleri serbest bırakmadan önce Batch aracısı günlüklerini toplayın. Batch aracı günlükleri, Batch hizmet günlüklerini karşıya yükleme API'sini kullanarak toplanabilir. Bu günlükler Microsoft'a yönelik bir destek biletinin parçası olarak sağlanabilir ve sorun giderme ve çözüm konusunda yardımcı olur.

Batch API'si

Zaman Aşımı Hataları

Zaman aşımı hataları, hizmetin isteği işleyemediği anlamına gelmez. Zaman aşımı hatası oluştuğunda, işlemin başarılı veya başarısız olup olmadığını doğrulamak için işlemi yeniden denemeniz veya duruma uygun olarak kaynağın durumunu almanız gerekir.

Bağlantı

Batch çözümlerinizde bağlantıyla ilgili aşağıdaki kılavuzu gözden geçirin.

Ağ Güvenlik Grupları (NSG) ve Kullanıcı Tanımlı Yollar (UDR)

Bir sanal ağda Batch havuzları sağlarken BatchNodeManagement kullanımıyla ilgili yönergeleri yakından izlediğinize emin olun.bölge hizmet etiketi, bağlantı noktaları, protokoller ve kuralın yönü. Hizmet etiketinin kullanılması kesinlikle önerilir; temel alınan Batch hizmeti IP adreslerini zaman içinde değiştirebilecekleri için kullanmayın. Batch hizmeti IP adreslerinin doğrudan kullanılması Batch havuzlarınızda dengesizlik, kesinti veya kesintilere neden olabilir.

Kullanıcı Tanımlı Yollar (UDR) için BatchNodeManagement kullanılması önerilir.Batch hizmeti IP adresleri yerine bölge hizmet etiketlerinin zaman içinde değişebileceği.

DNS'yi onurlandırma

Sistemlerinizin Batch hesabı hizmet URL'niz için DNS Yaşam Süresi'ne (TTL) uygun olduğundan emin olun. Ayrıca, Batch hizmeti istemcilerinizin ve Batch hizmetine yönelik diğer bağlantı mekanizmalarınızın IP adreslerine güvenmediğinden emin olun.

Yanıttaki "Bağlantı: kapat" üst bilgisinin yanı sıra 5xx düzey durum kodları içeren tüm HTTP istekleri, Batch hizmeti istemci davranışınızın ayarlanmasını gerektirir. Batch hizmeti istemciniz mevcut bağlantıyı kapatarak, Batch hesabı hizmeti URL'si için DNS'yi çözümleyerek ve yeni bir bağlantıda istekleri takip etme girişiminde bulunarak öneriyi gözlemlemelidir.

İstekleri otomatik olarak yeniden deneme

Batch hizmeti istemcilerinizin, yalnızca herhangi bir hizmet bakım süresi boyunca değil, normal işlem sırasında bile isteklerinizi otomatik olarak yeniden denemek için uygun yeniden deneme ilkelerine sahip olduğundan emin olun. Bu yeniden deneme ilkeleri en az 5 dakikalık bir zaman aralığına yayılmalıdır. Otomatik yeniden deneme özellikleri, .NET RetryPolicyProvider sınıfı gibi çeşitli Batch SDK'larıyla sağlanır.

Statik genel IP adresleri

Genellikle, batch havuzundaki sanal makinelere havuzun ömrü boyunca değişebilen genel IP adresleri üzerinden erişilir. Bu dinamik doğa, erişimi belirli IP adresleriyle sınırlayan bir veritabanı veya diğer dış hizmetle etkileşim kurmayı zorlaştırabilir. Bu sorunu gidermek için, denetlediğiniz statik genel IP adresleri kümesini kullanarak bir havuz oluşturabilirsiniz. Daha fazla bilgi için bkz . Belirtilen genel IP adresleriyle Azure Batch havuzu oluşturma.

Batch düğümü temel bağımlılıkları

Batch çözümlerinizi tasarlarken aşağıdaki bağımlılıkları ve kısıtlamaları göz önünde bulundurun.

Sistem tarafından oluşturulan kaynaklar

Azure Batch, VM'de değiştirilmemesi gereken bir kullanıcı ve grup kümesi oluşturur ve yönetir:

Windows:

  • PoolNonAdmin adlı bir kullanıcı
  • WATaskCommon adlı bir kullanıcı grubu

Linux:

  • _azbatch adlı bir kullanıcı

İpucu

Bu kullanıcıların veya grupların adlandırılması uygulama yapıtlarıdır ve herhangi bir zamanda değiştirilebilir.

Dosya temizleme

Batch, bekletme süresi dolduğunda görevlerin çalıştırıldığını çalışma dizinini etkin bir şekilde temizlemeye çalışır. Bu dizinin dışında yazılan tüm dosyalar, disk alanını doldurmaktan kaçınmak için temizleme sorumluluğunuzdadır.

Windows'ta başlangıç görevi çalışma dizininden bir hizmet çalıştırırsanız, klasör hala kullanımda olduğundan çalışma dizini için otomatik temizleme engellenir. Bu eylem performansın düşmesine neden olur. Bu sorunu çözmek için bu hizmetin dizinini Batch tarafından yönetilmeyen ayrı bir dizinle değiştirin.

Sonraki adımlar